概要
Val
関数は、Excel VBAで文字列を数値に変換するための関数です。この関数を使用することで、文字列に含まれる数値部分を抽出し、数値として処理できます。ユーザー入力の数値検証や、文字列から数値を取得する際に役立ちます。
構文
Val(文字列)
パラメータ
-
文字列
数値に変換したい文字列を指定します。この文字列の先頭から最初に見つかった数値部分が数値型で返されます。
戻り値
指定された文字列の最初の数値部分を数値型(整数または小数)として返します。数値が見つからない場合は、0を返します。
説明
Val
関数は、指定された文字列の最初の数値部分を数値として抽出し返します。数値以外の文字が先頭にある場合は無視されますが、数値の途中に現れる非数値文字は無視され、その時点で変換が終了します。スペース、タブ、および数値に関連する文字(小数点や符号など)は認識されますが、通貨記号やアルファベットは無視されます。
-
数値抽出の仕組み
文字列の先頭から見つかる数値を変換します。文字列の中に複数の数値がある場合、最初の数値部分のみが対象となります。
-
小数の処理
小数点は「.」のみ認識され、日本語や他の言語の小数点記号(例えば「,」)は無視されます。
使用例
基本的な使用例 - 文字列を数値に変換
Sub SampleVal()
Dim num As Double
num = Val("1234.56")
MsgBox "文字列 '1234.56' を数値に変換: " & num ' 結果: 1234.56
End Sub
文字列の先頭に数値が含まれる場合
Sub ValWithText()
Dim result As Double
result = Val("100円")
MsgBox "文字列 '100円' を数値に変換: " & result ' 結果: 100
End Sub
数値が文字列の途中にある場合
Sub ValWithMixedContent()
Dim result As Double
result = Val("ABC123XYZ")
MsgBox "文字列 'ABC123XYZ' を数値に変換: " & result ' 結果: 0(最初の数値が見つからないため)
End Sub
小数点の誤認識に注意
Sub ValWithComma()
Dim result As Double
result = Val("1,234.56")
MsgBox "文字列 '1,234.56' を数値に変換: " & result ' 結果: 1(カンマで分断される)
End Sub
備考
-
数値変換の制限
Val
関数は、英語表記の小数点「.」のみを認識します。他の言語で使用される小数点記号には対応していないため、事前に文字列を調整する必要があります。 -
文字列のクリーニング
通貨記号やアルファベットを含む文字列を数値に変換する際は、これらを取り除く処理を行うとより正確に変換できます。事前に不要な文字を削除するマクロを組み合わせて使用することが推奨されます。
-
エラーハンドリング
数値部分が見つからない場合は0を返すため、数値が期待される状況では適切なエラーチェックを行うことが重要です。