【ExcelVBA入門】数値を文字列に変換するためのStr関数の使い方とは

こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。

皆さんは、VBAで数値を文字列に変換する方法を知っていますか?

計算した数値を、文字列に変換して使うケースはよくあります。

そこで今回は、

・Str関数を使って数値を文字列に変換する方法

といった基礎的なことから、

・Str関数を使った具体的なサンプルコード

・変換後に空白ができてしまう問題の対処方法

・合わせて覚えると便利な文字列操作方法

といった応用的な方法まで、徹底的に解説します!

Str関数を使って数値を文字列に変換する方法

最初に、Str関数の使い方について解説します。

Str関数は以下のように書くことで、数値を文字列に変換することができます。

Str(数値)

カッコ()で数値を囲むだけなので、使い方も簡単ですよね。

このように、簡単に数値を文字列に変換することができます。

サンプルコード

次に、サンプルコードをもとに、具体的な使い方を解説します!

サンプルコード:

Sub Test()
  Dim intCost As Integer
  Dim strCost As String
  intCost = 10000
  
  '文字列に変換
  strCost = Str(intCost)
  
  MsgBox "商品の購入価格は" & strCost & "円です。"
End Sub

実行結果:

このサンプルでは、Integer型の変数(intCost)に10000を代入し、Str関数で変換した結果をString型の変数(strCost)に入れて、結果をメッセージで表示しています。

このように、簡単に文字列に変換することができます。

変換後に空白ができてしまう問題の対処方法

文字列に変換するだけであれば先ほどの方法でもできるのですが、1点注意点があります。

Str関数はプラスの数値を変換する場合、変換後の先頭に半角スペースができてしまいます。

半角スペースが出るサンプル:

Sub Test()
  Dim intNum_Pls As Integer
  Dim intNum_Min As Integer
  intNum_Pls = 100
  intNum_Min = -100
  
  '文字列に変換
  Dim strNum_Pls As String
  Dim strNum_Min As String
  strNum_Pls = Str(intNum_Pls)
  strNum_Min = Str(intNum_Min)
  
  MsgBox "strNum_Pls:" & strNum_Pls & vbCrLf & _
         "strNum_Min:" & strNum_Min
End Sub

実行結果:

strNum_Pls: 100
strNum_Min:-100

マイナス記号「-」の部分が、プラスの場合は半角スペースになってしまうわけですね。

そのため、半角スペースをなくしつつ文字列に変換するのがおすすめです!

CStr関数を使えば、半角スペースをなくしつつ文字列に変換することができます!

CStr関数を使ったサンプルコード:

Sub Test3()
  Dim intNum_Pls As Integer
  Dim intNum_Min As Integer
  intNum_Pls = 100
  intNum_Min = -100
  
  '文字列に変換
  Dim strNum_Pls As String
  Dim strNum_Min As String
  strNum_Pls = CStr(intNum_Pls)
  strNum_Min = CStr(intNum_Min)
  
  Debug.Print "strNum_Pls:" & strNum_Pls & vbCrLf & _
              "strNum_Min:" & strNum_Min
End Sub

実行結果:

strNum_Pls:100
strNum_Min:-100
プラスの数値を変換した場合でも、半角スペースは表示されていないですよね。

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

Val関数を使って文字列を数値に変換する方法

ここまで数値を文字列に変換する方法を解説してきましたが、合わせて文字列を数値に変換する方法を合わせて覚えておくのがおすすめです!

Val関数を使えば、以下のように簡単に数値に変換することができます。

Val関数を使ったサンプルコード:

Sub Test4()
  Dim strCost As String
  strCost = "1000"
  
  '数値に変換
  Dim intCost As Integer
  intCost = Val(strCost )
  
  Debug.Print "intCostの値:" & intCost & vbCrLf & _
              "intCostの型:" & TypeName(intCost)
End Sub

実行結果:

intCostの値:10000
intCostの型:Integer

文字列「10000」をVal関数で数値に変換し、値と型を結果に出力しています。

このように、簡単に文字列を数値変換することができます。

ちなみに、このサンプルで使っているTypeName関数は変数の型を調べることができるので、合わせて覚えておくのがおすすめです!

TypeName関数の使い方は以下でも詳しく解説しているので、気になる方は見てみてくださいね!

【ExcelVBA入門】文字列・数値を判定するためのTypeNameの使い方とは
更新日 : 2018年8月21日

補足:合わせて覚えると便利な文字列操作方法

今回はStr関数・CStr関数を使って数値を文字列に変換する方法を解説しましたが、文字列操作で覚えておくと便利な方法がたくさんあります。

以下で詳しくまとめているので、興味がある方はみてくださいね!

【VBA入門】文字列操作総まとめ(置換、結合、分割、変換、比較)
更新日 : 2019年4月24日

まとめ

今回は、VBAで数値を文字列に変換する方法について解説しました。

VBAでは、数値を文字列に変換して使うケースが多いです。

Str関数・CStr関数はどちらもとても簡単なので、ぜひ使ってみてくださいね!

\業界最安級/
月額2,980円のプログラミングスクール

✔ 業界最安値の月定額2,980円
✔ 「Q&A掲示板」で平均30分以内に回答がもらえる
✔ 月に一度の「オンライン相談」で悩みを解決
✔ 教材の数は30種類以上
✔ 入会金不要+いつでも退会OK

公式サイトはこちら

Writer

Sanshiro Wakizaka

フリーランス

北海道出身の30歳で、フリーランスエンジニア兼テックライターとして活動中。新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。

Webアプリ、業務アプリ開発において、要件定義 ~ 運用保守まで様々な経験あり。また3歳の娘がいる1児のパパで、日々娘との時間を確保するために仕事を頑張っています!
侍エンジニアでは、【誰でもわかるレベルのわかりやすさ】を意識して、記事を執筆中。

あなたの目的に合わせた
SAMURAI ENGINEERの運営サービス

SAMURAI ENGINEER Pro

未経験でも挫折しないプログラミングスクール

詳細はこちら

SAMURAI TERAKOYA

日本最大級のサブスク型オンラインITスクール

詳細はこちら

SAMURAI ENGINEER Freelance

「一人で稼げる」スキルを身につける

詳細はこちら
Close