はじめに
VBAで配列に格納した複数の文字列データを、"東京,大阪,名古屋" のように、特定の区切り文字を挟んで一つの文字列にまとめたい、という場面はよくあります。Forループを使って一つずつ文字列を連結していく方法もありますが、もっとスマートな方法があります。
それが、VBAの Join() 関数です。Join関数を使えば、配列の全要素を指定した区切り文字で連結するという処理を、たった一行で、非常にシンプルに記述できます。
この記事では、Join関数の基本的な使い方と、その便利な活用例について、分かりやすく解説します。
Join関数を使ったサンプルコード
このマクロは、4つの都市名が格納された配列を作成し、Join関数を使ってそれらをカンマとスペース(, )で連結し、結果をメッセージボックスに表示します。
完成コード
' Join関数で配列の要素を文字列に連結する
Sub JoinArrayElements()
Dim cityArray As Variant
Dim resultText As String
Dim delimiter As String
'--- 1. 連結したい要素を持つ配列を準備 ---
cityArray = Array("札幌", "横浜", "京都", "福岡")
'--- 2. 区切り文字を準備 ---
delimiter = ", " ' カンマと半角スペース
'--- 3. Join関数で配列を連結 ---
resultText = Join(cityArray, delimiter)
'--- 4. 結果を表示 ---
MsgBox resultText
' 表示結果: 札幌, 横浜, 京都, 福岡
End Sub
コードの解説
resultText = Join(cityArray, delimiter)
これが Join関数の核心部分です。
Join(元の配列, [区切り文字])
- 第1引数 (
cityArray): 連結したい要素が格納されている1次元配列を指定します。 - 第2引数 (
delimiter): 各要素を連結する際に、間に挟む**区切り文字(デリミタ)**を文字列で指定します。この引数は省略可能で、省略した場合は半角スペースが区切り文字として使われます。
この例では、cityArray の各要素が , という文字列で連結され、"札幌, 横浜, 京都, 福岡" という一つの文字列が生成されて resultText に代入されます。
改行で連結する
区切り文字に、改行を表すVBAの定数 vbCrLf を指定すれば、各要素を改行して連結することもできます。これは、結果をメッセージボックスやセルに複数行で表示したい場合に非常に便利です。
' 改行で連結する例
Sub JoinWithNewLine()
Dim taskArray As Variant
taskArray = Array("タスクA", "タスクB", "タスクC")
' 区切り文字に vbCrLf を指定
MsgBox Join(taskArray, vbCrLf)
End Sub
まとめ
今回は、VBAの Join関数を使って、配列の全要素を簡単・高速に一つの文字列へ連結する方法を解説しました。
Join(配列, 区切り文字)の構文で、配列を一つの文字列に変換できる。Split関数とは逆の働きをする関数。
Forループで文字列を一つずつ & で連結していくよりも、Join関数を使った方がコードがシンプルになり、処理も高速です。ログの作成や、CSV形式の文字列生成など、様々な場面で活躍する非常に便利な関数ですので、ぜひ覚えておきましょう。
