VBAテクニック集 VBA一覧 変数の代入 文法・構文

【VBA】変数に文字列を代入する方法|基本構文・結合・応用まで徹底解説

ExcelVBAで処理を自動化するうえで、文字列の操作は避けて通れない重要なスキルです。特に「変数に文字列を代入する方法」をマスターすると、メッセージの作成やファイル名の指定、セル操作などあらゆる場面で応用できます。

この記事では、「vba 変数 代入 文字列」というキーワードで検索された方に向けて、以下の内容を詳しく解説します。

✅ 変数に文字列を代入する基本構文
✅ 複数の文字列を結合して代入する方法
✅ 文字列と数値を組み合わせて代入するコツ
✅ セルの値を文字列として変数に代入するパターン
✅ 実務で役立つ応用テクニックと注意点


✅ 変数に文字列を代入する基本構文

まずは、変数に文字列を代入する一番基本的な構文から見ていきましょう。

Dim msg As String
msg = "こんにちは、VBAの世界へようこそ"

ここでは msg という文字列型(String)の変数に "こんにちは、VBAの世界へようこそ" という文字列を代入しています。

・ 文字列は必ずダブルクォーテーション(")で囲む

VBAでは、文字列リテラルを記述するときには"(ダブルクォーテーション)で囲む必要があります。これを忘れるとエラーになります。


【VBA】文字列(cells・range・value)として取得する方法

✅ 複数の文字列を結合して代入する方法

複数の文字列を変数に結合して代入したい場合、「&(アンパサンド)」 を使います。

Dim lastName As String, firstName As String
Dim fullName As String

lastName = "田中"
firstName = "太郎"
fullName = lastName & " " & firstName  ' → 「田中 太郎」

このように、スペースや記号も自由に挟んで組み合わせることが可能です。

【VBA】"value 型が一致しません"エラー(Value型)の原因と対処方法


✅ 文字列と数値を組み合わせて代入する方法

数値や日付を文字列と一緒に変数へ代入したい場合には、CStr関数で文字列に変換すると安全です。

Dim name As String
Dim age As Integer
Dim message As String

name = "佐藤"
age = 28
message = name & "さんは" & CStr(age) & "歳です"

・ 注意:数値を直接結合する場合、型の自動変換に依存しないほうが安全

' OKだが推奨しない書き方
message = name & "さんは" & age & "歳です"

自動変換に頼ると、意図しない文字列型の扱いになることもあるため、明示的に変換するのがおすすめです。


【VBA】変数にまとめて代入する方法|複数代入・配列・オブジェクトの扱いも解説

✅ セルの値を文字列として変数に代入する

Excelシート上のセルに入力されたデータを、VBAの文字列変数に代入する方法も非常によく使います。

Dim productName As String
productName = Range("A1").Value

この場合、セルA1の値が数値でも日付でも、自動的に文字列として代入されることがほとんどですが、明示的にCStr関数を使っておくと確実です。

productName = CStr(Range("A1").Value)

【VBA】セルの値を変数配列に取得:ループ処理

✅ 改行を含む文字列を変数に代入する

改行を含めたい場合は、vbCrLfvbNewLine を使います。

Dim msg As String
msg = "1行目" & vbCrLf & "2行目"

このようにすることで、複数行のメッセージを生成することができます。MsgBoxでの表示や、セルへの書き込みでも活用できます。


【VBA】Split関数:文字列を分割する方法

■ 実務で役立つ応用例

・MsgBoxで動的なメッセージを表示

Dim userName As String
Dim notice As String

userName = "山田"
notice = "こんにちは、" & userName & "さん。" & vbCrLf & "本日のレポートを確認してください。"

MsgBox notice

・ファイル名を動的に生成

Dim fileName As String
Dim reportType As String
Dim today As String

reportType = "売上レポート"
today = Format(Date, "yyyymmdd")

fileName = reportType & "_" & today & ".xlsx"

このように、文字列と日付を組み合わせてファイル名やフォルダ名を作る場面は非常に多いです。


■ よくあるミスと注意点

・ 文字列の囲い忘れ

Dim city As String
city = 東京  ' ← エラー("東京"と書く必要あり)

文字列は "東京" のように必ずダブルクォーテーションで囲む必要があります。


・ 変数の宣言を省略している

myName = "佐藤"  ' ← 暗黙の変数宣言(ミスの元)

' 正しくは:
Dim myName As String
myName = "佐藤"

特に Option Explicit をモジュールの先頭に書いておくことで、未宣言の変数を使った際にエラーにしてくれるので、予期せぬバグの防止になります。


・ 数値と文字列の混同

Dim id As Integer
Dim label As String

id = 123
label = "ID:" & id  ' OK(自動変換)

' ただし以下のようなケースではCStr推奨
label = "ID:" & CStr(id)

数値を文字列として扱いたいときは CStrでの明示的な変換が推奨されます。


■ まとめ|VBAの文字列代入をマスターしてスムーズな自動化へ

変数に文字列を代入する処理は、VBAの中でも基本中の基本ですが、実務で頻出かつ柔軟な使い方が求められる要素です。以下のポイントをおさえておきましょう。

  • 文字列は "(ダブルクォーテーション)で囲む
  • & で文字列の結合が可能
  • 数値や日付は CStr() で文字列に変換して扱うと安全
  • vbCrLf を使って改行を含む文字列も扱える
  • セルの値を取得して文字列変数に代入することも多い
  • Option Explicit を使って宣言漏れを防止

これらを理解すれば、メッセージ表示・ファイル生成・ログ作成など、VBAでの文字列処理が劇的に楽になります。

-VBAテクニック集, VBA一覧, 変数の代入, 文法・構文