構文
Val(String)
String・・・ 数値に変換したい文字列 [省略した場合は戻り値0] 戻り値・・・・数値(整数、小数点あり)
Stringに指定した文字列を先頭から取得し、数値以外の文字が見つかるまで文字を数値に変換します。
Val関数のサンプルコード
Public Sub test_Val()
'■通常の使い方
' 先頭の文字から確認し、数字以外の文字列が出た部分までを数値として返す。
MsgBox Val("1000円") '1000
MsgBox Val("2020年12月1日") '2020
'■引数指定しなければ0
MsgBox Val("") '0
'■注意
' ピリオドは読み込み可能だが、カンマは読み込みできない。(カンマは文字列として認識する)
MsgBox Val("1000.50円") '1000.50
MsgBox Val("1,000円") '1
' \(円マーク)は文字列として認識する
MsgBox Val("\1000") '0
' タブや半角スペース、全角スペースは無視する
MsgBox Val(" 1000") '1000
MsgBox Val("10 00") '1000
MsgBox Val("1000 ") '1000
' 全角文字は文字列として判断する
MsgBox Val("1000円") '0
' 16新数は数値として認識する
MsgBox Val("&HFFFF") '-1
End Sub
注意点
- \(円マーク)の場合は文字列と判断されるので数値が戻ってきません。注意しましょう。
- Webスクレイピングや他システムからデータを取得する時、データ型がLong型だと意図しない数値以外のデータが飛んできた時に、エラーになってしまう場合があります。
その場合にString型に一度代入し、Val関数で変換する事で処理が可能です。
但し、前述のように仕様に癖がある為、Replace関数やReplaceメソッドの併用をお勧めします。
関連記事
Webで取得したデータの半角スペース削除ができない【ExcelVBA】
セル範囲の中から指定文字を置換する【Replaceメソッド】【VBA入門】
指定した文字列の中から指定文字を置換する【Replace関数】【VBA入門】



コメント