VBA 文字列を結合する

はじめに

Excel VBA マクロの文字列 (String) を結合する方法を紹介します。

文字列 & 文字列 のようにして、文字列を結合できます。

vbCrLf 定数と結合して、改行できます。

Format 関数」から、数値や日付の形式を指定して結合できます。

Join 関数」から、配列を区切り文字で文字列に結合できます。

文字列を抽出するには「文字列を抽出する」をご覧ください。
  • 目次
    • 文字列を結合する
    • 配列を結合する
    • 文字列を操作する

文字列を結合する

文字列 & 文字列 のように入力して、文字列を結合できます。& が文字列を結合する「演算子」です。

Dim s As String
s = "1" & "2" & "3" ' 1 2 3 を結合する
Debug.Print(s) ' 123

文字列を改行するには vbCrLf 定数と結合します。

Dim s As String
s = "一行目" & vbCrLf & "二行目"
Debug.Print(s)
' 一行目
' 二行目

s = s & vbCrLf & "三行目"
Debug.Print(s)
' 一行目
' 二行目
' 三行目
その他の特殊文字については「特殊文字と制御文字」をご覧ください。

数値や日付

数値や日付と結合すると、自動で文字列に変換されて結合されます。

Dim s As String
s = "1" & 2 ' 1 & 2  になる
Debug.Print(s) ' 12

s = "a" & Date ' 1 & 日付 になる
Debug.Print(s) ' a2013/01/02

Format 関数」を使用して、数値や日付の形式を指定して結合できます。

Dim s As String
s = "数値:" & Format(12345,"#,###")
Debug.Print(s) ' 数値:12,345

s = "日付:" & Format(Now,"yyyy年mm月dd日")
Debug.Print(s) ' 日付:2013年01月02日

s = "時刻:" & Format(Now,"hh:nn:ss")
Debug.Print(s) ' 時刻:03:04:56

+ を使っても結合できますが、足し算と混同したり、数値があると実際に足してしまうため & を使います。

Dim s As String
s = "1" + "2" + "3" ' 1 & 2 & 3 になる
Debug.Print(s) ' 123

s = "1" + "2" + 3 ' 1 & 2 + 3 になる
Debug.Print(s) ' 15

配列を結合する

Join 関数」を使用して、配列を区切り文字で結合できます。

引数には (文字列型配列, 区切り文字) を指定します。

Dim s As String
s = Join(Array("A", "B", "C"))
Debug.Print(s) ' A B C

s = Join(Array("A", "B", "C"), "") ' 省略したときは半角スペース
Debug.Print(s) ' ABC

s = Join(Array("A", "B", "C"), ",") ' カンマ区切り
Debug.Print(s) ' A,B,C

s = Join(Array(1, True, 3)) ' String 型以外の配列
Debug.Print(s) ' 1 True 3

Dim 配列(2) As String
配列(0) = "ああ"
配列(1) = "いい"
配列(2) = "うう"

s = Join(配列, "-")
Debug.Print(s) ' ああ-いい-うう

Split 関数」を使用して、文字列を区切り文字で分割して配列にできます。

Dim list() As String

list = Split("A,B,C", ",")
Debug.Print(list(0)) ' A
Debug.Print(list(1)) ' B
Debug.Print(list(2)) ' C

文字列を操作する

文字列を操作する次の方法があります。