Categories: excel

VBAで数値を文字列に変換する方法|初心者でもわかる基本から応用まで解説

Excel VBAを使っていると、数値を文字列に変換したい場面によく出会います。たとえば、桁数を揃えたいとき、数値を連結してセルに出力したいとき、あるいはゼロ埋めして社員番号や伝票番号のような形式にしたいときなどです。
本記事では、VBA初心者の方にもわかりやすいように、数値から文字列への変換方法を基本から応用まで解説します。VBAで文字列操作を自在に行いたい方は、ぜひ最後までご覧ください。


数値から文字列に変換する基本:CStr関数

VBAで最も基本的な数値→文字列変換の方法は、CStr関数を使う方法です。

Sub SampleCStr()
Dim num As Integer
Dim result As String

num = 123
result = CStr(num)
MsgBox result '「123」と表示される
End Sub

このように、CStrは整数や小数を簡単に文字列に変換してくれます。MsgBoxやセルに出力する際、文字列として扱いたい場合に便利です。


Str関数との違いに注意しよう

もう一つ、似たような関数にStr関数があります。こちらも数値を文字列に変換するのですが、Strを使うと、先頭に空白が入るという注意点があります。

Sub SampleStr()
Dim num As Integer
Dim result As String

num = 123
result = Str(num)
MsgBox "[" & result & "]" ' 「[ 123]」と表示される(先頭にスペース)
End Sub

このように、Str関数は正の数の場合、先頭にスペースを入れる仕様になっています。この点で、CStrの方が実用性が高いと言えるでしょう。


小数点以下の桁数を指定して文字列にするには?

たとえば、3.141592を「3.14」のようにして文字列にしたい場合は、Format関数を使うのがおすすめです。

Sub SampleFormatDecimal()
Dim pi As Double
Dim result As String

pi = 3.141592
result = Format(pi, "0.00")
MsgBox result ' 「3.14」と表示される
End Sub

このように、Format関数は表示形式を指定して文字列を整形できるので、実務では頻繁に活用されます。


ゼロ埋めして桁数を揃える

社員番号などで「0001」「0023」のようにゼロ埋めされた文字列を作りたい場合も、Format関数が活躍します。

Sub SampleZeroPadding()
Dim id As Integer
Dim result As String

id = 7
result = Format(id, "0000")
MsgBox result ' 「0007」と表示される
End Sub

桁数に応じて「000000」などに変えれば、任意の桁数のゼロ埋めが可能です。


数値と文字列を連結する場合

数値と文字列をくっつける場合も、CStrを使ってから連結することで、期待通りの結果が得られます。

Sub SampleConcatenate()
Dim year As Integer
Dim label As String

year = 2025
label = "年は" & CStr(year) & "年です"
MsgBox label ' 「年は2025年です」と表示される
End Sub

もちろん、&を使えば、VBAは自動的に文字列として扱ってくれることもありますが、明示的に変換しておくとエラーを防げます。


セルの値を数値として取得し、文字列に変換する

Excelのセルに入力された値を取り出して、それを文字列として使いたいケースもあります。

Sub SampleFromCell()
Dim value As Variant
Dim result As String

value = Range("A1").Value ' A1セルから値を取得
result = CStr(value)
MsgBox "A1の値は「" & result & "」です"
End Sub

CStrは変数の型に関わらず、数値を文字列として安全に変換してくれます。


Val関数との違い:逆方向も知っておこう

余談ですが、文字列から数値に戻す場合は、Val関数やCLngなどの関数を使います。

Sub SampleVal()
Dim str As String
Dim num As Double

str = "123.45"
num = Val(str)
MsgBox num + 1 ' 「124.45」と表示される
End Sub

これにより、文字列→数値→文字列という双方向の変換が自在にできます。


日付や通貨の変換も文字列で可能

Format関数は、日付や通貨などの特殊なフォーマットにも対応しています。

Sub SampleDateCurrency()
Dim today As Date
Dim price As Double

today = Now
price = 12345.6

MsgBox Format(today, "yyyy/mm/dd") ' 「2025/04/16」など
MsgBox Format(price, "#,##0") ' 「12,346」
End Sub

これらもすべて文字列として扱われるため、見た目を整えて出力するのに便利です。


まとめ

数値を文字列に変換する方法は、VBAを使った業務自動化で頻繁に使われます。特に以下のような用途で活用できます。

  • メッセージボックスで表示する
  • セルに整形して出力する
  • ファイル名やフォルダ名に数値を組み込む
  • ユーザーにわかりやすく伝えるために、数値を加工する

主な変換方法としては、次のような関数を覚えておくと安心です。

  • CStr:基本の数値→文字列変換
  • Format:フォーマット付き変換(ゼロ埋め、小数桁調整、日付、通貨)
  • Str:旧来の関数(先頭スペース注意)

文字列変換の理解は、VBAの応用力を高める鍵になります。ぜひこの記事を参考に、実務や自動化の場面で使いこなしてみてください。

upandup

Web制作の記事を中心に、暮らし、ビジネスに役立つ情報を発信します。 アフィリエイトにも参加しています。よろしくお願いいたします。