数値を文字列に変換する
数値を文字列に変換するにはいくつか方法があります。
- CStr関数(数値を見た目上の文字列に変換) CStr関数がおすすめ!
- Str関数(数値を記号付きの文字列に変換)
- Format関数(数値を指定フォーマットの文字列に変換)
これら3つのどれを使っても文字列に変換できますが、それぞれ違いがあります。
CStr関数 | 数値をそのまま文字列にする場合に使います。 |
Str関数 | 正負記号付きの文字列に変換します。変換元の数値が0または正数(プラス値)であれば左端に半角スペースが付きます。負数(マイナス値)であれば左端に負号(半角マイナス文字の-)が付きます。 |
Format関数 | 数値を金額形式や日付形式などの指定した形式(フォーマット)の文字列に変換します。 |
なお、String型を返すStr$関数とFormat$関数もありますが、機能としては$が無い場合と同じため省略します。また$付き関数は使う必要がありません。
$があるかないかの違いや$付き関数を使う必要がない理由などの詳細については「VBA関数の$ドルマークの意味」を参照ください。
数値を文字列に変換するサンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
Sub NumberToStringTest() Dim s As String Dim n Dim dt '// 負数 n = -123 s = CStr(n) Debug.Print n & " → [" & s & "]" s = Str(n) Debug.Print n & " → [" & s & "]" '// 0 n = 0 s = CStr(n) Debug.Print n & " → [" & s & "]" s = Str(n) Debug.Print n & " → [" & s & "]" '// 正数 n = 123 s = CStr(n) Debug.Print n & " → [" & s & "]" s = Str(n) Debug.Print n & " → [" & s & "]" '// 日付形式の数値 n = 20180213 s = CStr(n) Debug.Print n & " → [" & s & "]" s = Str(n) Debug.Print n & " → [" & s & "]" '// Format '// 数字に変換 s = Format(n, "0") Debug.Print n & " → [" & s & "]" '// カンマ区切り文字列に変換 s = Format(n, "#,###,###") Debug.Print n & " → [" & s & "]" '// 金額表記に変換 s = Format(n, "\\#,###,###") Debug.Print n & " → [" & s & "]" '// パーセント表示に変換 s = Format(n, "0.00%") Debug.Print n & " → [" & s & "]" '// 日付に変換 s = CStr(n) s = Left(s, 4) & "/" & Mid(s, 5, 2) & "/" & Right(s, 2) If (IsDate(s) = True) Then dt = CDate(s) s = Format(dt, "yyyy/mm/dd") Debug.Print n & " → [" & s & "]" End If End Sub |
実行結果
1 2 3 4 5 6 7 8 9 10 11 12 13 |
-123 → [-123] -123 → [-123] 0 → [0] 0 → [ 0] 123 → [123] 123 → [ 123] 20180213 → [20180213] 20180213 → [ 20180213] 20180213 → [20180213] 20180213 → [20,180,213] 20180213 → [\20,180,213] 20180213 → [2018021300.00%] 20180213 → [2018/02/13] |
コード説明
前半部分は数値の-123、0、123を使ってCStr関数とStr関数の違いを出力しています。CStr関数は単純に文字列に変換していますが、Str関数の場合は正数または0の場合に半角スペースが付与されます。
後半部分はFormat関数の表示形式をいくつか出力しています。なお書式の種類については「セルの表示形式の書式記号」にまとめていますので参照ください。
基本的にはFormat関数の第二引数の書式を設定すればいいのですが、数値を日付に変換する場合は一度文字列に変換したあとにMid関数などで年月日を切り出してスラッシュ区切りなどでの日付形式の文字列にします。
数値が日付として正しいのであればここまでの処理で文字列変換は終わりですが、日付として正しいか分からない場合はIsDate関数を使ってチェックをした方がよいでしょう。