VBA初心者必見!数値と文字列の変換テクニック集

ようこそ♪ささぽんのExcel教室へ。
今回は VBAにおける「数値と文字列の変換テクニック集」をお届けします!
マクロを使っていて「セルに入力された値が文字列扱いで計算できない」「数値を文字列にして桁数をそろえたい」そんな場面はありませんか?
VBAには数値⇔文字列の変換をスムーズに行う関数や方法が用意されています。
この記事では、基本的な変換方法から、実務で役立つ使い分けのポイント、注意点までを解説していきます。

この記事は以下のような方におすすめです!
・VBAで文字列や数値の扱いに悩んだことがある方
・セルの値を計算や表示用に変換したい方
・VBAの基礎を実務に活かしたい初心者の方
このブログは「基礎からExcelマクロを学びたいと考えている方」や、
「独学での習得に壁を感じた方」に向けて、やさしく、わかりやすく、丁寧に解説しています。
読み終わるころにはきっと、
「Excelマクロって意外と簡単かも!」「もっとやってみたい!」と思えるはず。
一緒に楽しく学びながら、Excelマクロ使いを目指しましょう!
目次
1. 数値と文字列の違いを理解しよう
◼︎数値型と文字列型の基本を知る
VBAで扱うデータは、大きく「数値型」と「文字列型」に分かれます。
数値型は計算や大小比較に使えるデータで、整数や小数を格納できます。
一方、文字列型は文字や記号をそのまま保持するため、計算には利用できません。
たとえばセルに「123」と入力されていても、文字列型であれば「数字としての123」ではなく「文字としての123」として扱われます。
見た目は同じでも、中身の型によって処理の結果が大きく変わるのがポイントです。
◼︎VBAでよく使うデータ型とは
VBAにはさまざまなデータ型がありますが、文字列と数値変換でよく使うのは次の4種類です。
データ型 | 内容 | 例 |
Integer | 整数を扱う | 100, -50 |
Double | 小数を扱う | 3.14, -0.5 |
String | 文字列を扱う | “Hello”, “123” |
Variant | 自動的に型が決まる柔軟な型 | 文字列にも数値にもなる |
初心者のうちは、「String(文字列)」と「Integer/Double(数値)」を意識すれば十分です。
特に「Variant型」は便利ですが、型があいまいになるため意図しない挙動をすることがあります。
慣れるまでは明示的に型を指定するのがおすすめです。
◼︎型が合わないと起こるエラーの例
VBAでは、異なる型をそのまま代入するとエラーが発生することがあります。
例えば次のコードを見てください。
Dim x As Integer
x = “ABC” ’ 数値型に文字列を代入 → エラー発生
この場合、「ABC」は文字列なので数値型の変数xには入りません。
また、数値っぽい文字列(例:“123”)でも、型変換をしないと計算に使えません。
つまり、正しい型に変換してから代入することが重要です。
この理解が、次の「文字列を数値に変換する方法」に直結します。
データ型について詳しく学びたい方は、以下の記事も併せてご確認ください!
2.VBAで文字列を数値に変換する方法
◼︎Val関数で文字列を数値に変換する
VBAで文字列を数値に変換するもっともシンプルな方法がVal関数です。
Val関数は、文字列の先頭から数値として解釈できる部分を取り出し、数値に変換してくれます。
Dim txt As String
Dim num As Double
txt = “123”
num = Val(txt) ’ numには123が入る
特徴として、文字列の中に数字以外の文字が含まれていても、先頭から読んで数値部分だけを取り出します。
txt = “123ABC”
num = Val(txt) ’ numには123が入る
ただし、文字列の最初が数字でなければ結果は0になります。
txt = “ABC123”
num = Val(txt) ’ numには0が入る
このようにVal関数は便利ですが、「文字列のどの部分を数値に変換するか」はややクセがあるため、形式がはっきり分かっているデータに使うのがおすすめです。
◼︎CIntやCDblで型を明示的に変換する
Val関数のほかに、VBAには型を明示的に変換するための関数が用意されています。
代表的なのがCInt(整数型に変換)とCDbl(倍精度小数型に変換)です。
Dim txt As String
Dim i As Integer
Dim d As Double
txt = “123”
i = CInt(txt) ’ 整数型に変換 → 123
d = CDbl(txt) ’ 小数型に変換 → 123
これらの関数は、Val関数と違って「数値にできない文字列」を変換しようとするとエラーになります。
txt = “ABC”
i = CInt(txt) ’ エラー発生(型変換できないため)
このため、正しい数値だけが入っていると分かっている場合に使うのが基本です。
また「小数を扱うときはCDbl、整数だけならCInt」といったように、用途に応じて使い分けましょう。
◼︎変換がうまくいかないときの注意点
文字列から数値への変換は便利ですが、すべてが思い通りに変換できるわけではありません。よくある注意点を整理しておきましょう。
- 空文字は0になる
例:Val(“”) は 0 を返します。意図せず「0」として扱われる可能性があります。 - 小数点や桁区切りの記号
CInt(“123.45”) は小数点以下を四捨五入して 123 になります。
一方、Val(“123,456”) はカンマを無視して 123 を返してしまうので注意が必要です。
- 文字が混じっている場合
Val(“123ABC”) は 123 になりますが、CInt(“123ABC”) はエラーを出します。
このように、関数ごとに動作のルールが異なるため、「どのような文字列を処理するか」を意識して変換方法を選ぶことが重要です。
3. VBAで数値を文字列に変換する方法
数値をそのまま扱うだけではなく、文字列に変換して表示や加工をしたい場面も多くあります。
たとえば「桁数を揃えて表示したい」「計算結果をテキストとして結合したい」といったケースです。
ここでは、VBAで数値を文字列に変換する基本的な方法と、その使い分けを見ていきましょう。
◼︎CStr関数で数値を文字列に変換する
数値を文字列に変換するもっとも基本的な方法は、CStr関数を使うことです。
CStr関数は数値をそのまま文字列型に変換し、文字列として扱えるようにしてくれます。
Dim num As Integer
Dim txt As String
num = 123
txt = CStr(num) ’ txtには “123” が入る
このようにCStrを使えば、数値を簡単に文字列化できます。
例えば、計算結果を文章と一緒に表示するケースで役立ちます。
MsgBox “合計は “ & CStr(100 + 200) & “ です。”
’ → 「合計は 300 です。」と表示される
基本的に「数値をそのまま文字列にしたい」ときはCStrを使えば十分です。
◼︎Format関数で見た目を整えて文字列化する
CStr関数は単純に数値を文字列化しますが、見た目を整えて表示したいときにはFormat関数が便利です。
Format関数は「表示形式」を指定できるため、数値を文字列に変換するだけでなく、桁区切りや日付形式などの加工も同時に行えます。
Dim num As Double
Dim txt As String
num = 12345.678
txt = Format(num, “#,##0.00”)
MsgBox txt ’ → “12,345.68” と表示される
指定できる表示形式にはさまざまなものがあります。たとえば:
- “#,##0” → 3桁区切りの整数(例:12345 → “12,345”)
- “0.00” → 小数点以下2桁(例:3.1 → “3.10”)
- “yyyy/mm/dd” → 日付を文字列化(例:2025/9/22 → “2025/09/22”)
このようにFormat関数を使えば、実務で求められる整形済みの文字列を直接作ることができます。
◼︎数値から文字列への変換で注意すべき点
数値を文字列に変換するときには、いくつか気をつけるべきポイントがあります。
- 計算ができなくなる
一度文字列に変換すると、そのままでは数値計算に使えません。計算する場合は再度数値に戻す必要があります。 - 表示形式が固定される
Format関数で加工した場合、桁区切りや小数点以下の桁数などは「文字列」として確定します。セルに貼り付けても再計算には使えません。 - 結合は便利だが型混在に注意
文字列同士の結合に便利ですが、数値を意図せず文字列にしてしまうと、思わぬ箇所で「文字扱い」されることがあります。
このように、数値から文字列に変換するのは便利ですが、用途に応じて「変換後の扱い方」も意識することが大切です。

4.実務で使える変換の活用シーン
数値と文字列の変換は、実務の中で頻繁に登場します。
例えば「セルに入力された値を計算に使いたい」「計算結果を文字列に整えて報告書に載せたい」といった場面です。
ここでは、代表的な活用シーンを3つに分けて紹介します。
◼︎セルの入力値を数値に変換して計算する
Excelでは、セルに数値が入力されていても文字列扱いになっていることがあります。
そのままでは計算に使えないため、数値に変換してから処理することが必要です。
Dim ws As Worksheet
Dim val As Double
Set ws = ThisWorkbook.Sheets(“Sheet1”)
val = CDbl(ws.Range(“A1”).Value)
MsgBox val * 2 ’ A1が”123”なら246と表示
このように、セルの値をCDblやCIntで数値に変換してから計算に使うと、エラーを避けられます。
特にユーザー入力や外部データを扱う場合は、必ず型変換を意識するのが実務のポイントです。
◼︎数値を文字列化してレポートやメッセージに使う
数値をそのまま表示するのではなく、文字列化して見やすい形に整えるとレポートやメッセージ出力に便利です。
たとえば、計算結果をそのままメッセージに表示すると:
Dim total As Double
total = 12345.678
MsgBox “合計は “ & total & “ です。”
’ → 「合計は 12345.678 です。」
と、小数点以下が長く出てしまうことがあります。
ここでFormat関数を使えば、見た目を整えた文字列として出力できます。
MsgBox “合計は “ & Format(total, “#,##0.00”) & “ 円です。”
’ → 「合計は 12,345.68 円です。」
このように、Format関数を使って数値を文字列に変換することで、読み手に伝わりやすい表現にできます。
5. まとめ|数値と文字列変換のポイント整理
ここまで、文字列を数値に変換する方法、数値を文字列に変換する方法、そして実務での活用シーンを見てきました。
最後に、記事全体のおさらいをして、明日からすぐに使える知識として整理しておきましょう。
◼︎数値と文字列変換の基本を振り返る
まずはVBAにおける数値と文字列の変換方法を整理しておきましょう。
- 文字列を数値に変換するには Val関数 または CInt/CDbl を使う。
- 数値を文字列に変換するには CStr関数または Format関数 を使う。
- Val関数は柔軟だが、数字以外が混じると挙動に注意が必要。
- CIntやCDblは厳密に変換できるが、変換できない文字列はエラーになる。
この基本さえ押さえておけば、多くの場面で役立ちます。
◼︎実務での使い分けポイント
実務では、「数値として処理するのか」「文字列として表示するのか」を明確に使い分けることが大切です。
迷ったときは、次のポイントを意識しましょう。
- 計算に使うデータは数値に変換
→入力値を CDbl や CInt で数値化してから処理。 - 表示やレポートに使うデータは文字列に変換
→出力時に CStr や Format で整形。 - 途中で型を混在させない
→数値のまま扱う処理と、文字列化して扱う処理は分けて書くのが安全。
この3点を意識するだけで、エラーの防止やコードの読みやすさが大きく向上します。
◼︎学んだことを実際に試してみよう
学んだ知識は、実際にコードを書いて動かしてみることで定着します。
以下のようなミニ演習を試してみましょう。
- 「A1セルの文字列を数値に変換して2倍にするマクロ」を作ってみる。
- 「計算結果をFormat関数で整形してMsgBoxで表示する。」
- 「数値と文字列を結合して、レポート文を自動生成する。」
実際に手を動かすことで、「どんなときにValを使うべきか」「Formatがどんな書式で使えるか」が自然に理解できるようになります。
型の変換を自在に扱えるようになると、作れるマクロの幅が大きく広がります。まずは簡単なものから試して、少しずつマスターしていきましょう!