VBAで文字列を数値に変換するには、Val関数を使用します。
Val関数の使い方
Val関数は、指定した文字列に含まれる数値を数値に変換します。先頭から、最初の文字列が現れるまでの数値を返します。構文は下記です。
1 |
Val([文字列]) |
引数は一つだけで、戻り値は数値です。第1字目が文字列の場合、0を返します。
特徴
1.変換されるのは最初の文字列が現れるまで
Val関数は、文字列の先端から1字ずつ内容を調べ、数値に変換できない文字列が現れるとそこで処理を終えます。下記に例を示します。
1 2 3 4 5 6 7 |
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には、任意の文字列式を指定します。
[実行結果]
Aでは、最初の文字列「人」までの「500」が、同じくBでは「2016」が返されています。Cでは先頭が文字列なので、「0」となりました。注意として、全角の数字は数値とみなされません。
2.スペース、タブの扱い
スペース(全/半角問わず)、タブは無視されます。
1 2 3 4 5 |
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) |
3.記号
「.」(ピリオド)のみ小数点として認識します。「¥」などの通常数値とみなされる記号も文字列と見なされます。桁区切りでよく使われる「,」は文字列とみなされます。例えば、「3,000」は「3」になるますのでご注意ください。
1 2 3 4 5 |
Dim A As String, B As String A = "123.589" '小数点 "." B = "999,999" 'カンマ "," Debug.Print A & "→" & Val(A) Debug.Print B & "→" & Val(B) |