文字列に含まれる数値を適切なデータ型に変換(Val関数)
 Val関数は指定した文字列に含まれる数値を適切なデータ型に変換
して返します。文字列データ中に数字以外の文字が見つかると読み込み
を中止し、それ以前に見つかった数値を返します。つまり数字以外の
文字で始まる文字列を数値に変換することはできません。

  構文 Val(String)

  設定項目    内容
  String      数値に変換したい文字列式を指定[省略不可]

●補足1●

 円記号(\)やカンマ(,) など、通常は数値の一部とみなされる記号や
文字も数値として解釈しません。
 ただし、基数を示すプリフィックス&O(8進数)や&H(16進数)は認識します。
引数の文字列中に含まれるスペース、タブ、ラインフィードは無視します。

 次のサンプルを見てください。どのような文字列が値に変換でき、
どのような文字列が値に変換できないかがわかると思います。

●サンプル●

Sub ValSamp1()

    Dim myStr(6) As String
    Dim i As Integer
    Dim myMsg As String
    myStr(0) = "国道162号"
    myStr(1) = "\9,800"
    myStr(2) = "1億人"
    myStr(3) = "12,000"
    myStr(4) = "1/3"
    myStr(5) = "123  456" & vbLf & "789"
    myStr(6) = "&HFF"
    For i = 1 To 6
       myMsg = myMsg & myStr(i) & String(2, 9) & _ 
               Val(myStr(i)) & String(2, 13)
    Next i
    MsgBox myMsg
End Sub

●補足2●
 実行結果の2番目を見てください。数値が先頭にあるにもかかわらず、
変換されていないのは全角の文字列であるためです。Excel5.0/95 VBA
では全角文字列の数字も数値として認識していましたが、
Excel97/2000 VBAでは認識しません。よって、全角文字列の数字を数値
に変換する際には、CInt関数やCDbl関数を用いるようにしてください。

Excel2000



戻る


Excel Word Access VBA! モーグ