Flat lay of business concept
Excel VBAを使っていると、数値を文字列に変換したい場面によく出会います。たとえば、桁数を揃えたいとき、数値を連結してセルに出力したいとき、あるいはゼロ埋めして社員番号や伝票番号のような形式にしたいときなどです。
本記事では、VBA初心者の方にもわかりやすいように、数値から文字列への変換方法を基本から応用まで解説します。VBAで文字列操作を自在に行いたい方は、ぜひ最後までご覧ください。
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
を使うと、先頭に空白が入るという注意点があります。
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
関数や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の応用力を高める鍵になります。ぜひこの記事を参考に、実務や自動化の場面で使いこなしてみてください。