Excel VBA | 文字列の結合

Excel VBA VBA
スポンサーリンク

以下は、初心者でもそのまま実践できるように整理した完全版まとめ+サンプルコード集です。

1. 基本:文字列を結合するには &

VBAでは、文字列をつなげたいときは &(アンパサンド) を使います。

✅ 例:

Sub Sample1()
    Dim s As String
    s = "こんにちは、" & "世界!"
    MsgBox s
End Sub
VB

🔹出力結果:

こんにちは、世界!

+ でも結合できるが注意!

Sub Sample2()
    Dim s As String
    s = "Hello " + "World"
    MsgBox s
End Sub
VB

これは動きますが、数値が混ざると「加算」扱いになることがあるため危険です。


2. 数値と文字列を結合する(& を使う)

Sub Sample3()
    Dim ver As String
    Dim num As Integer

    num = 12
    ver = "Version " & num
    MsgBox ver
End Sub
VB

🔹出力結果:

Version 12

💡& は自動で数値を文字列に変換してくれます。

+ で文字列と数値を結合するとエラー

Sub Sample4()
    Dim ver As String
    Dim num As Integer

    num = 12
    ver = "Version " + num   ' ← 型が合わずエラー
    MsgBox ver
End Sub
VB

🔸結果:

「型が一致しません(Type mismatch)」エラーが出ます。


3. 日付と文字列を結合する

Sub Sample5()
    Dim d As Date
    Dim s As String

    d = Date ' 今日の日付
    s = "今日の日付は " & d
    MsgBox s
End Sub
VB

🔹出力例:

今日の日付は 2025/10/17

💡VBAは自動で日付を "YYYY/MM/DD" 形式に変換します。


4. 改行を入れて結合する(vbCrLf)

改行を入れるときは vbCrLf を使います。

Sub Sample6()
    Dim msg As String
    msg = "行1です" & vbCrLf & "行2です" & vbCrLf & "行3です"
    MsgBox msg
End Sub
VB

🔹出力結果:

行1です
行2です
行3です

💡vbCrLf は「改行コード」です。Windows環境ではこの1つでOKです。


5. 複数のデータをまとめて結合する

Sub Sample7()
    Dim name As String
    Dim age As Integer
    Dim city As String
    Dim result As String

    name = "田中"
    age = 25
    city = "東京"

    result = "名前:" & name & vbCrLf & _
             "年齢:" & age & vbCrLf & _
             "出身:" & city
    MsgBox result
End Sub
VB

🔹出力結果:

名前:田中
年齢:25
出身:東京

6. 応用:セルの値をつなげる

Sub Sample8()
    Dim fullName As String
    fullName = Range("A1").Value & " " & Range("B1").Value
    Range("C1").Value = fullName
End Sub
VB

🔹A1に「山田」、B1に「太郎」がある場合:
C1 → 「山田 太郎」


7. 複数行に分けて読みやすく書く

Sub Sample9()
    Dim text As String
    text = "これは" & _
           "長い" & _
           "文字列です"
    MsgBox text
End Sub
VB

🔹出力結果:

これは長い文字列です

💡行の途中で改行したいときは「 _(アンダースコア)」を行末につけます。


8. 文字列を繰り返して結合する(ループ)

Sub Sample10()
    Dim i As Integer
    Dim stars As String

    stars = ""
    For i = 1 To 5
        stars = stars & "★"
    Next i

    MsgBox stars
End Sub
VB

🔹出力結果:

★★★★★


まとめ表

操作記号動作
文字列と文字列の結合&安全・推奨
数値と文字列の結合&自動変換でOK
文字列と日付の結合&自動変換でOK
改行を入れるvbCrLf"文字" & vbCrLf & "文字"
長い文を複数行に書く_"文字" & _ で改行可
ループで繰り返し結合For〜Next"★" を複数回結合

練習問題

問題 1:
ユーザーの入力を結合して「こんにちは、○○さん!」と表示するマクロを作ってみましょう。

ヒント:

Sub Greeting()
    Dim name As String
    name = InputBox("あなたの名前を入力してください")
    MsgBox "こんにちは、" & name & "さん!"
End Sub
VB

問題 2:
A1〜A3 のセルにある文字列を「,」で区切って 1 行にまとめ、B1 に出力するマクロを作ってください。

解答例:

Sub JoinCells()
    Dim result As String
    result = Range("A1").Value & ", " & Range("A2").Value & ", " & Range("A3").Value
    Range("B1").Value = result
End Sub
VB
VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました