VBAで数値を文字列に変換するには、Str関数を使用します。逆に文字列を数値に変換するには、Val関数を用います。参考にしたい方は以下の記事をご覧ください。
Str関数の使い方
構文は下記です。
Str(数値)
引数は数値の一つのみです。戻り値は文字列です。
例と注意点
実行例
下記をご覧下さい。3種の数値型データを、Str関数文字列に変換します。型を返すTypeName関数を用いて、文字列変換ができていることを確認してみます。
1 2 3 4 5 6 7 8 |
'Long型、Integer型、Double型を試してみます Dim Num1 As Long, Num2 As Integer, Num3 As Double Num1 = 10: Num2 = 100: Num3 = 16.256 Debug.Print Str(Num1), TypeName(Str(Num1)) 'Typename関数は変数の型を返します Debug.Print Str(Num2), TypeName(Str(Num2)) Debug.Print Str(Num3), TypeName(Str(Num3)) |
[実行結果]
文字列型を示す"String"が出力されており、変換されたことがわかります。
注意点:正の数は語頭にスペースが入る
Str関数で変換された文字列は、元の数値が正の場合、語頭にスペースが入ります。下記例をご覧ください。
1 2 |
Debug.Print Str(10), "変換後" & Str(10) Debug.Print Str(-10), "変換後" & Str(-10) |
正の数"10"を変換した際は、「 10」「変換後 10」と、10の直前に半角のスペースが入っていますが、負の数"-10"には入っていないことがわかります。
よりわかりやすくするために、比較演算子=を用いて、Str(10)と文字列の"10"を比較してみましょう。下記をご覧ください。Str(-10)と"-10"も比較しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
'10で比較 If Str(10) = "10" Then Debug.Print "Str(10)と10は等しいです" Else Debug.Print "Str(10)と10は等しくありません" End If '-10で比較 If Str(-10) = "-10" Then Debug.Print "Str(-10)と-10は等しいです" Else Debug.Print "Str(-10)と-10は等しくありません" End If |
元数値の正負で、結果が異なっています。正の数の場合は文字列変換後、語頭にスペースが入りますので、Str(10)と"10"は等しくないと見なされます。Str関数で得た結果を処理する際には、注意が必要です。