【ExcelVBA】数値を文字列に変換するStr関数とは?注意と対策も解説

仕事効率化
スポンサーリンク

こんにちは、VBAエンジニアのやすこれです。

みなさんは、VBAで数値を文字列として扱いたいと思ったことはありませんか?

  • 見た目は同じなのに書式が違ってエラーになった
  • セルの値を変数に入れたら型違いでエラーになった
  • VBAで数値を文字列として扱う方法が知りたい!
という方も多いのではないでしょうか?

そこで今回は、数値を文字列に変換できるStr関数を紹介します。

スポンサーリンク

VBAで数値を文字列に変換するStr関数とは?

Str関数は、数値を文字列に変換する関数です。
  1. 基本構文
Str(数値)
以上のように書くことで、かっこ内の数値が文字列に変換されます。
  1. コード例
Dim msgLng As Long
   msgLng = 100
       
   MsgBox "msgLngは" & TypeName(msgLng) & "型" & vbCrLf & vbCrLf & "Str(msgLng)は" & TypeName(Str(msgLng)) & "型"
Str関数を使って、Long型整数である「msgLng」を文字列に変換します。

「msgLng」「Str(msgLng)」それぞれの型をTypeName関数で取得すると数値が文字列型に変換されているのがわかります。

Str関数で数値を文字列に
  • 「TypeName関数」はかっこ内の変数の情報を返す関数
  • ex)TypeName(String型変数)→「String」を返す

VBAのStr関数で注意すべき特性と解決方法

Str関数の注意すべき特性

数値を文字列に変換できる便利なStr関数ですが、注意しなければならないことがあります。
それはプラスの数値を変換した場合、文字列の先頭に半角スペースがつくことです。

値比較を行うとき、せっかく型を変換しても文字列が変わってしまっては意味がありません。

半角スペースがつくサンプルコードを紹介します。
MsgBox "〇Str関数:" & Str(100) & vbCrLf & _
             " ×Str関数:" & 100
正の数値「100」をStr関数・数値のままMsgBoxで出力した結果、次のようになります。

Str関数で正の数値を文字列にすると半角スペースができる
少々わかりづらいですが、Str関数で文字列に変換した上段の「100」は「:」の後ろにスペースができてしまっています。

値比較などで予期せぬ結果がでてしまうので、次に紹介する半角スペースをなくして文字列に変換する方法も覚えてしまいましょう。

Str関数の注意点を解決する方法

Str関数でできてしまう半角スペースをなくすには、CStr関数を使いましょう。
  1. 基本構文
CStr(数値)
Str関数と同じく上記のように書くことで、かっこ内の数値が文字列に変換されます。
  1. コード例
MsgBox "〇CStr関数:" & CStr(100) & vbCrLf & " ×CStr関数:" & 100
先ほどと同じように正の数値「100」をCStr関数・数値のままMsgBoxで出力した結果は次のようになります。

CStr関数で正の数値を文字列にすると半角スペースができない
Str関数とは違い、CStr関数で文字列に変換した上段の「100」は「:」の後ろに半角スペースなく表示されているのがわかりますね。

このようにCStr関数を使えば、半角スペースを表示することなく値を文字列に変換することができます。

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

ここまで数値を文字列に変換するStr関数を紹介してきましたが、実務では文字列を数値にしたい場合もあります。

「Val関数」を使えば、文字列を数値に変換することができます。

Val関数の使い方

Val関数は、文字列を数値に変換する関数です。
  1. 基本構文
Val(文字列)
以上のように書くことで、かっこ内の文字列が数値に変換されます。
  1. コード例
Dim msgStr As String
   msgStr = "100"
       
   MsgBox "msgStrは" & TypeName(msgStr) & "型" & vbCrLf & vbCrLf & "Val(msgStr)は" & TypeName(Val(msgStr)) & "型"
Val関数を使って、文字列である「”100″」を数値に変換します。

「msgStr」「Val(msgStr)」それぞれの型をTypeName関数で取得すると文字列が数値であるDouble型に変換されているのがわかります。

Val関数で文字列を数値に
使い方も簡単なので、数値を文字列に変換するStr関数とあわせて、文字列を数値に変換する「Val関数」も覚えてしまうのがおすすめです。

まとめ

今回はVBAで数値を文字列に変換できるStr関数の使い方をご紹介しました。
Str関数は、数値を文字列として扱いたい時、簡単に使うことができます。
また、あわせて紹介したStr関数の注意や、文字列を数値に変換するVal関数も覚えておくと非常に便利です。
ぜひ、使ってみてください。