Excel VBAで文字列を数値に変換する:Val

VBAで文字列を数値に変換するには、Val関数を使用します。

Val関数の使い方

Val関数は、指定した文字列に含まれる数値を数値に変換します。先頭から、最初の文字列が現れるまでの数値を返します。構文は下記です。

Dim A As String, B As String, C As String
    A = "500人"         '数値+文字列
    B = "2016年8月5日"  '数値の間に文字列が入っている
    C = "第6会大会"     '第1字目が文字列
Debug.Print A & "→" & Val(A)
Debug.Print B & "→" & Val(B)
Debug.Print C & "→" & Val(C)

引数stringには、任意の文字列式を指定します。

[実行結果]Val

Aでは、最初の文字列「人」までの「500」が、同じくBでは「2016」が返されています。Cでは先頭が文字列なので、「0」となりました。注意として、全角の数字は数値とみなされません。

2.スペース、タブの扱い

スペース(全/半角問わず)、タブは無視されます。

Dim A As String, B As String, C As String
    A = " 500 369"     '500の前に半角スペース1つ、後ろに全角スペース1つ
    B = "     600 989"  '600の前にタブ2つ、後ろにタブ1つ
Debug.Print A & "→" & Val(A)
Debug.Print B & "→" & Val(B)

[実行結果]Val2

3.記号

「.」(ピリオド)のみ小数点として認識します。「¥」などの通常数値とみなされる記号も文字列と見なされます。桁区切りでよく使われる「,」は文字列とみなされます。例えば、「3,000」は「3」になるますのでご注意ください。

Dim A As String, B As String
    A = "123.589"       '小数点 "."
    B = "999,999"       'カンマ ","
Debug.Print A & "→" & Val(A)
Debug.Print B & "→" & Val(B)

[実行結果]Val3


イベント