文字列を結合する

文字列と文字列を結合し 1 つの文字列にする処理を行う方法です。ここでは Excel VBA で文字列を結合する方法について解説します。

(Last modified: )

文字列を結合する

文字列と文字列を結合するにはアンパサンド( & )演算子を使う方法とプラス( + )演算子を使う方法の2つがあります。

"文字列1" & "文字列2"
"文字列1" + "文字列2"

どちらの方法でも演算子の左辺と右辺を結合した新しい文字列を取得します。

次の例を見て下さい。

Sub テスト()
    Dim s1 As String
    Dim s2 As String
    Dim s3 As String
    Dim s4 As String

    s1 = "こんにちは。"
    s2 = "お元気ですか?"

    s3 = s1 & s2
    s4 = s1 + s2
End Sub

変数 s3s4 にはどちらも "こんにちは。お元気ですか?" という文字列が入力されます。

どちらを使用しても構わないのですが、 + 演算子は数値と数値の加算を行う演算子としても使用するので、文字列の連結には & を使用すると分かりやすいかもしれません。

文字列と数値を結合する

& 演算子は文字列と文字列の連結だけでなく文字列と数値や数値と数値の連結にも使用することができます。

次の例を見て下さい。

Sub テスト()
    Dim s1 As String
    Dim s2 As String
    Dim n1 As Integer
    Dim n2 As Integer

    n1 = 12
    n2 = 8
    s1 = "Version." & n1
    s2 = n1 & n2
End Sub

変数 s1 には "Vrsion.12" 、変数 s2 には "128" が代入されます。文字列と数値を結合した結果は文字列になり、また数値と数値を結合した結果も文字列になります。

それに対して + 演算子は文字列と文字列の連結では利用できますが、文字列と数値の連結には使用できません。

次の例を見て下さい。

Sub テスト()
    Dim s1 As String
    Dim s2 As String
    Dim n1 As Integer

    n1 = 12
    n2 = 8
    s1 = "Version." + n1
End Sub

このプログラムを実行すると "Version." + n1 の部分で「型が一致しません」というエラーになります。文字列と数値、または数値と文字列を連結する場合は & 演算子を使用するようにしてください。

今度は + 演算子を使って数値と数値の連結を行ってみます。

Sub テスト()
    Dim s1 As String
    Dim s2 As String
    Dim n1 As Integer

    n1 = 12
    n2 = 8
    s1 = n1 + n2
End Sub

このプログラムを実行するとエラーにはなりませんが、変数 s1 には "128" ではなく 12 + 8 = 20 という演算結果を文字列にした "20" が代入されます。

このように & 演算子と + 演算子を使った場合で結果が異なります。そういった意味からも 2 つの値を単純に結合したい場合には & だけを使用するようにした方がいいかと思います。

文字列と日付を結合する

& 演算子は文字列と日付の連結や日付と日付の連結にも使用することができます。

次の例を見て下さい。

Sub テスト()
    Dim s1 As String
    Dim s2 As String
    Dim d1 As Date
    Dim d2 As Date

    d1 = #2022/12/14#
    d2 = #16:25#
    s1 = "今日の日付は" & d1
    s2 = d1 & d2
End Sub

変数 s1 には "今日の日付は2022/12/14" 、変数 s2 には "2022/12/1416:25:00"" が代入されます。文字列と日付を結合した結果は文字列になり、また日付と日付を結合した結果も文字列になります。

また文字列と数値の連結の場合と同じように + 演算子を使って文字列と日付を連結しようとすると「型が一致しません」というエラーになります。日付と日付の連結は + 演算子でも行うことができます。

-- --

Excel VBA で文字列を結合する方法について解説しました。

( Written by Tatsuo Ikura )

広告