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

VBAで数値を文字列に変換するには、Str関数を使用します。逆に文字列を数値に変換するには、Val関数を用います。参考にしたい方は以下の記事をご覧ください。

Str関数の使い方

構文は下記です。

Str(数値)

引数は数値の一つのみです。戻り値は文字列です。

例と注意点

実行例

下記をご覧下さい。3種の数値型データを、Str関数文字列に変換します。型を返すTypeName関数を用いて、文字列変換ができていることを確認してみます。

'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))

[実行結果]Str1

文字列型を示す"String"が出力されており、変換されたことがわかります。

注意点:正の数は語頭にスペースが入る

Str関数で変換された文字列は、元の数値が正の場合、語頭にスペースが入ります。下記例をご覧ください。

Debug.Print Str(10), "変換後" & Str(10)
Debug.Print Str(-10), "変換後" & Str(-10)

[実行結果]Str2

正の数"10"を変換した際は、「 10」「変換後 10」と、10の直前に半角のスペースが入っていますが、負の数"-10"には入っていないことがわかります。

よりわかりやすくするために、比較演算子=を用いて、Str(10)と文字列の"10"を比較してみましょう。下記をご覧ください。Str(-10)と"-10"も比較しています。

'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

[実行結果]Str3

元数値の正負で、結果が異なっています。正の数の場合は文字列変換後、語頭にスペースが入りますので、Str(10)と"10"は等しくないと見なされます。Str関数で得た結果を処理する際には、注意が必要です。


イベント