今回はVBAでよく使う文字列を結合・連結する方法を備忘録も兼ねて紹介します。
不定期でVBAに関する記事を投稿していますので、是非こちらも併せてご覧ください!
文字列を結合・連結する方法
基本的な文字列の結合のやり方
文字列を結合・連結するには&(アンド)記号を使用します。文字列の間に&記号を記入して繋げるイメージです。
以下、テストコードになります。コピペして確認してみてください。
Sub test_strJoin()
Dim target_word As String
target_word = "今日は" & "2022年" & "10月27日" & "木曜日です。"
MsgBox target_word
End Sub
実行するとメッセージボックスに結合した文字列が表示されます。

「”文字列A” & ”文字列B” & ”文字列C” & …」のように文字列間を&記号で繋ぐことで文字列を結合することができます。これは必ずと言っていいほどよく使うので是非覚えておきましょう。
文字列以外とも結合することができる
文字列同士でないとできないわけではなく、別のデータ型とでも結合することが出来ます。
Sub test_strJoin()
Dim target_str_1 As String
Dim target_str_2 As String
target_str_1 = "ブログを始めて" & 7 & "ヶ月経ちました。"
target_str_2 = "今の時間は" & Now & "です。"
MsgBox target_str_1 & vbCrLf & target_str_2
End Sub
実行すると以下のように表示されます。

target_str_1には数字、target_str_2には日付を入れていますが問題なく結合できています。このように文字列結合は文字列同士だけでなく、文字列と異なるデータ型でも結合することが出来ます。
是非覚えておきましょう。
シチュエーションに応じた文字列結合のやり方
次に、様々なシチュエーションに応じた文字列結合のやり方を紹介したいと思います。是非参考にしていただければと思います。
配列の中身をまとめて結合する場合
配列の中身をまとめて結合する場合です。
配列の中身をまとめて結合するには、結合した文字列を格納する変数を定義し、配列の値を継ぎ足すようにします。
以下、テストコードになります。コピペして確認してみてください。
Sub test_strJoin_1()
Dim target_str As String
Dim array_str() As String
Dim i As Long
ReDim array_str(3)
array_str(0) = "人生"
array_str(1) = "終わり"
array_str(2) = "良ければ"
array_str(3) = "総て良し"
For i = 0 To UBound(array_str)
target_str = target_str & array_str(i)
Next i
MsgBox target_str
End Sub
実行するとメッセージボックスにありがたい名言が表示されます。

上記テストコードでは、target_str(結合した文字列を格納する変数)にarray_str(文字列が入った配列)の中身をFor文を使って結合するようにしています。
このテストコードのポイントは以下の部分になります。
target_str = target_str & array_str(i)

なんでtarget_strが2回出てくるの?
と思われる方もいるかもしれません。
結論、target_strを1個だけにしてしまうと、target_strの中身を次の配列の値で上書きしてしまいます。
target_str = array_str(i)

実行結果を見てわかるように、array_str(0)~(2)が結合されておらず、最後の要素(array_str(3))の”総て良し”のみ格納されています。その為、target_strを2つ記入し、結合したtarget_strを古いtarget_strに格納する必要があるわけです。
なので、配列の中身を一つの変数にまとめたい場合は、以下のようにすることで既に入れてある文字列を消さずに文字列を継ぎ足していけます。
【結合後の文字列を入れる変数】=【結合後の文字列を入れる変数】&【配列の値】
逆に、

配列の中身が上手く結合されない・・・
となっている方は、結合後の文字列を入れる変数が=より右側に記入されているか確認してみてください。
文字列の中に改行を加えたい場合
中には、

文字列内で改行したい・・・
って方もいると思います。
文字列内に改行を加えたい場合は、文字列間に改行コード(vbCrLf)を記入することで任意の箇所で改行することができます。
以下、テストコードになります。コピペして確認してみてください。
Sub test_strJoin_2()
Dim target_str As String
target_str = "人生" & vbCrLf & "終わり" & vbCrLf & "良ければ" & vbCrLf & "総て良し"
MsgBox target_str
End Sub
実行すると名言が表示されるのは同じですが、改行コードを入れた箇所で改行されているのが確認できます。

ちなみに、改行コードを2個連続で結合すれば1行分空けることが出来ます。場合によっては使うかもしれないので覚えておきましょう。
Sub test_strJoin_2()
Dim target_str As String
target_str = "人生" & vbCrLf & vbCrLf & _
"終わり" & vbCrLf & _
"良ければ" & vbCrLf & _
"総て良し"
MsgBox target_str
End Sub

ソースコード自体を改行して見やすくしたい場合
中には、

文字列じゃなくてソースコード自体を改行したい・・・
っていう方もいると思います。
文字列ではなくソースコードを改行したい場合は&記号を入力し、半角スペースを開けた後に_(アンダーバー)記号を入力すればソースコードを改行することが出来ます。
こちらもテストコードを用意しました。コピペして確認してみてください。
Sub test_strJoin_3()
Dim target_str As String
target_str = "人生" & _
"終わり" & _
"良ければ" & _
"総て良し"
MsgBox target_str
End Sub
実行すると同じようにメッセージボックスに名言が表示されます。

注意点として_(アンダーバー)記号を入れたからといって、入れた箇所で改行されるわけではないので、そこだけ注意しましょう。
まとめ
今回はVBAでよく使う文字列を結合・連結する方法を紹介しました。
文字列を結合する際は、
- 文字列間を&(アンド)記号で繋げる
- 改行したい場合は改行コード(vbCrLf)を任意の箇所に設置する
上記2点に気を付けていただければと思います。
コメント