【Excel VBA】数値→文字列・文字列→数値に変換する方法

数字は通常、数値として取り扱うことが殆どですが、文字列として取り扱うこともあります。

この記事では、数値を文字列に変換する方法、逆に文字列を数値に変換する方法についてご紹介します。

数値を文字列に変換したい(Str関数)

数値を文字列に変換する関数の構文は、以下の通りです。

Str(数値)

とても簡単ですが、見た目が変わらないので実際に変わったかどうかわかりません。

TypeName関数という変数の方を文字列で返す関数があります。TypeName関数でどう変わるか試してみましょう。

Sub 数値→文字列変換()
    MsgBox 10 & "→" & Str(10)
    MsgBox TypeName(10) & "→" & TypeName(Str(10))
End Sub

変数ではなく直接数値を入れていますが、これを実行すると、

と表示され、文字列に変換されることがわかります。

文字列変換時のスペースを消したい(CStr関数)

Str関数は、プラス(+)とマイナス(-)を認識して変換するため、プラスの場合は半角スペースが表示されます。半角スペースを消して使いたい場合は、CStr関数を使いましょう。構文は以下の通りです。

CStr(数値)

先ほどのコードで、Str関数をCStr関数に変えてみましょう。

Sub 数値→文字列変換2()
    MsgBox 10 & "→" & CStr(10)
    MsgBox TypeName(10) & "→" & TypeName(CStr(10))
End Sub

半角スペースが消えました。

Str関数は正負記号付きの文字列に変換するのに対し、Cstr関数は数値をそのまま文字列に変換します。

文字列を数値に変換したい(Val関数)

文字列を数値に変換する関数の構文は、以下の通りです。

Val(文字列)

こちらもとても簡単ですね。見た目が変わらないので、TypeName関数を使ってどう変わるか確認します。

Sub 文字→列数値変換()
    MsgBox "10" & "→" & Val("10")
    MsgBox TypeName("10") & "→" & TypeName(Val("10"))
End Sub

※ダブルコーテーション(”)で数字を囲むと文字列として扱われます。

Val関数で数値に変換した場合、”Double”に変換されるようです。

Val関数で数字以外の文字列を入れるとどうなる?

数字以外の文字列をVal関数で変換しようとするとどうなるでしょう?

Sub 文字列→数値変換2()
    MsgBox Val("テスト")
End Sub

エラーが出るかと思っていましたが、「0」に変換されるようでした。

コメント

タイトルとURLをコピーしました