構文
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入門】
コメント