【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関数はどちらもとても簡単なので、ぜひ使ってみてくださいね!

LINEで送る
Pocket

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。
Webアプリ、業務アプリ開発において、要件定義、設計、インフラ、製造、テスト、運用保守など、様々な経験あり。
また、侍ブログ編集部として、これまでに200記事以上の記事を執筆。
現在はフリーランスエンジニア兼テックライターとして活動中。