はじめに
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形式の文字列生成など、様々な場面で活躍する非常に便利な関数ですので、ぜひ覚えておきましょう。