VBAで文字列を結合する方法|初心者でもわかるサンプル付き解説

VBA(Visual Basic for Applications)は、ExcelやWordなどMicrosoft Office製品を自動化するための強力なツールです。中でも「文字列の結合」は、帳票の作成やログ出力、メール本文の作成など、さまざまな場面で登場する基本技術のひとつです。この記事では、VBAで文字列を結合する方法を基礎からわかりやすく解説し、実用的なコード例も紹介します。これからVBAを学ぶ方や、既に使っているけれども効率的な記述方法を見直したい方にとって、役立つ内容となっています。


VBAで文字列を結合する基本の方法

VBAでは、文字列を結合するために「&演算子」または「+演算子」を使用します。最も一般的で推奨されるのは「&演算子」です。

&演算子の基本例

Sub Sample1()
Dim firstName As String
Dim lastName As String
Dim fullName As String

firstName = "山田"
lastName = "太郎"

fullName = lastName & " " & firstName
MsgBox fullName
End Sub

この例では、「太郎 山田」という形式で名前を結合しています。

+演算子の注意点

Dim result As String
result = "Hello" + "World"

一見問題なく動きそうですが、+は数値の加算にも使われるため、変数の型や値が曖昧だとエラーの原因になることがあります。そのため、文字列結合には必ず&演算子を使用することが推奨されます。


改行を含めた文字列の結合

メッセージボックスやファイル出力などで、改行を含めて複数行の文字列を結合したい場合もよくあります。その際には「vbCrLf」という定数を使います。

Sub Sample2()
Dim message As String

message = "1行目" & vbCrLf & "2行目" & vbCrLf & "3行目"
MsgBox message
End Sub

このようにすることで、メッセージボックス内に複数行のテキストを表示できます。


複数のセルの値を結合する

Excelの複数セルの値を結合して1つの文字列にしたい場合、ループ処理を使って効率よく処理できます。

Sub Sample3()
Dim result As String
Dim i As Integer

For i = 1 To 5
result = result & Cells(i, 1).Value & ", "
Next i

MsgBox "結合結果:" & result
End Sub

この例では、A1~A5セルの値をカンマ区切りで結合しています。


Join関数を使って配列を結合する

複数の文字列が配列に格納されている場合、「Join関数」を使うと簡潔に結合できます。

Sub Sample4()
Dim names() As String
Dim result As String

names = Split("佐藤,鈴木,高橋,田中,伊藤", ",")
result = Join(names, "・")

MsgBox result
End Sub

このコードは「佐藤・鈴木・高橋・田中・伊藤」と表示されます。Join関数は、配列内のすべての要素を指定した区切り文字でつなぐ便利な関数です。


複数行の文字列リテラルを扱う方法

長い文章を結合する際には、_(アンダースコア)を使うことで、複数行に分けて記述できます。

Sub Sample5()
Dim text As String

text = "この文章はとても長いので、" & _
"途中で改行してコードの可読性を" & _
"高めています。"

MsgBox text
End Sub

このように記述することで、コードが読みやすくなります。


応用:セル結合と文字列結合を同時に行う

たとえば、氏名、住所、電話番号といった情報を結合して、1つのセルにまとめたい場合もあります。

Sub Sample6()
Dim name As String
Dim address As String
Dim phone As String
Dim output As String

name = Cells(1, 1).Value
address = Cells(1, 2).Value
phone = Cells(1, 3).Value

output = "【氏名】" & name & vbCrLf & _
"【住所】" & address & vbCrLf & _
"【電話】" & phone

Cells(1, 4).Value = output
End Sub

このコードを実行すると、D1セルに氏名・住所・電話番号が改行付きで表示されます。


ユーザー定義関数(UDF)で結合処理をカスタマイズ

VBAでは、独自の関数を作って処理を簡略化することも可能です。

Function CombineText(text1 As String, text2 As String, Optional delimiter As String = " ") As String
CombineText = text1 & delimiter & text2
End Function

Excelシート上でこの関数を以下のように使えば、

=CombineText("山田", "太郎")

結果として「山田 太郎」と表示されます。


まとめ

文字列の結合は、VBAを使う上で非常に基本的かつ頻繁に使う処理です。&演算子を使った基本的な結合から、vbCrLfを使った改行処理、配列を活用したJoin関数、セル値の結合やUDFによるカスタマイズまで、さまざまな場面で応用できます。正しい方法を知っておくことで、エラーを防ぎ、可読性と保守性の高いコードを書くことができます。

これからVBAを使って自動化やツール作成を考えている方は、ぜひ今回紹介した方法を自分のプロジェクトに活かしてみてください。

タイトルとURLをコピーしました