更新日:、 作成日:
VBA Val 関数:数字を数値に変換する
はじめに
Excel VBA マクロの Val 関数から数字を数値に変換する方法を紹介します。
Val 関数は、文字列の先頭にある数字を数値に変換します。
123あいう なら 123 を返します。
変換できないときは 0 を返します。エラーは発生しません。
文字列を必ず数値に変換したいときに使用します。
文字列を数値に変換するには「文字列を変換する」をご覧ください。
Val 関数の引数と戻り値
Val(文字列)
文字列を数値に変換します。
引数「文字列」 | 文字列を指定します。 |
戻り値の型 | 変換した数値に対応した数値型 (主に Double など) |
解説
引数「文字列」の先頭にある数字を数値に変換します。
123あいう456 なら 123 を返します。数字以外の文字が見つかったときは、その後ろの数字は無視されます。
引数「文字列」に空白が含まれているときは、それを削除してから変換します。1 2 3 なら 123 を返します。
引数「文字列」の先頭が変換できない文字のときは 0 を返します。エラーは発生しません。
&HFF のように &H を付けた 16進数の文字列は変換できます。
\100 や 1,234 のように「CInt 関数」では変換できる値でも、Val 関数は \ や , は数字ではないので、変換できません。
123 のような全角の数字も変換できません。
通常はどのような値でも Double 型に変換されます。
CInt 関数との違い
「CInt 関数」を使用しても、文字列を数値型に変換できます。
Val 関数:
- 数値に変換できない値は 0 に変換します。エラーは発生しません。
- 半角の数字だけ変換できます。
- 空白を削除してから変換します。
- "12あいう" のように先頭が数字なら、その数字を変換します。
- "1,234" のようにカンマ区切りの数字は、カンマの前の数字を変換します。
CInt 関数:
- "123" のように、全角の数字を変換できます。
- "1,234" のように、カンマ区切りの数字を変換できます。
- "\123" のように、円マークが付いた数字を変換できます。
- 空白や数字以外の文字列が含まれるときはエラーになります。
スポンサーリンク
使用例
Val 関数の使用例を紹介します。
数値に変換する
数値に変換します。
Dim d As Double
d = Val("123")
Debug.Print(d) ' 123
d = Val("123")
Debug.Print(d) ' 0
d = Val("1.5")
Debug.Print(d) ' 1.5
d = Val("2.5")
Debug.Print(d) ' 2.5
d = Val("\100") ' 円マーク
Debug.Print(d) ' 0
d = Val("1,000")
Debug.Print(d) ' 1
d = Val("あいう")
Debug.Print(d) ' 0
d = Val("あいう123")
Debug.Print(d) ' 0
d = Val("123あいう")
Debug.Print(d) ' 123
d = Val("1 0")
Debug.Print(d) ' 10
d = Val("1.5g")
Debug.Print(d) ' 1.5
d = Val("&HFF")
Debug.Print(d) ' 255
CInt 関数から数値に変換する
「CInt 関数」などは変換できないときにエラーが発生します。
Dim i As Integer
i = CInt("123")
Debug.Print(i) ' 123
i = CInt("123")
Debug.Print(i) ' 123
i = CInt("1.5")
Debug.Print(i) ' 2
i = CInt("2.5")
Debug.Print(i) ' 2
i = CInt("\100") ' 円マーク
Debug.Print(i) ' 100
i = CInt("1,000")
Debug.Print(i) ' 1000
i = CInt(True)
Debug.Print(i) ' 1
i = CInt(Now)
Debug.Print(i) ' 変換できる、IsNumeric 関数は False
i = CInt("2013/1/1") ' 型が一致しません
i = CInt("32768") ' オーバーフロー
i = CInt("Tips") ' 型が一致しません
i = CInt("1 0") ' 型が一致しません
i = CInt("100円") ' 型が一致しません
i = CInt("1.5g") ' 型が一致しません