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関数を用いるようにしてください。
|