Excel

【VBA】文字列の連結(&、+)数値と文字列での使用は注意が必要

更新日:2023/12/01

VBAで&(アンパサンド)または + を使用すると、文字列を連結できます。
また数値と文字列の連結にも使用できますが、+ については注意が必要です。
場合によっては想定しない結果になるので、これらの演算子を使用した時の動作を把握しておきましょう。

 

文字列の連結

文字列と文字列を連結するときは、&または + を使用します。

Sub test1()
    Dim string1 As String, string2 As String
    Dim string3 As String, string4 As String
    
    ' &で文字列連結
    string1 = ">こんにちは。" & "いい天気ですね。"
    string2 = string1 & vbCrLf & "散歩にいきませんか?" & vbCrLf
    Debug.Print string2

    ' + で文字列連結    
    string3 = ">こんにちは。" + "いい天気ですね。"
    string4 = string3 + vbCrLf + "散歩にいきませんか?" & vbCrLf
    Debug.Print string4
    
End Sub

複数の文字列を &または + で連結できます。

vbCrLfは改行コードです。
連結することで、改行できます。

実行すると、次のような文字列がイミディエイトウィンドウに表示されます。

>こんにちは。いい天気ですね。
散歩にいきませんか?

>こんにちは。いい天気ですね。
散歩にいきませんか?

+ は足し算の意味があります。
変数と変数に+を使用したとき、文字列の結合を意図しているか足し算しているの判断できない可能性があります。

文字列の連結は、&を使用することをお勧めします。

 

数値と文字列の連結

文字列と数値に&を使用すると、数値が文字列化されて連結されます。
+は少し特殊です。
数値文字列と数値に使用すると、数値文字列が数値に変換されて加算されます。
数値でない文字列と数値に使用すると、エラー(型が一致しません。)になります。

Sub test2()
    Debug.Print ">&で文字列と数値連結"
    Debug.Print "あ" & 12345
    Debug.Print 12345 & "あ"
    Debug.Print vbCrLf
    
    Debug.Print ">+で文字列と数値連結"
    Debug.Print "あ" + 12345
    Debug.Print 12345 + "あ"
    Debug.Print vbCrLf
    
    Debug.Print ">+で文字列と数値文字列連結"
    Debug.Print "あ" + "12345"
    Debug.Print "12345" + "あ"
    Debug.Print vbCrLf
    
    Debug.Print ">+で数値文字列と数値を連結⇒加算"
    Debug.Print "12345" + 1
    Debug.Print 1 + "12345"
    Debug.Print vbCrLf
    
    Debug.Print ">+で数値と数値を連結⇒加算"
    Debug.Print 12345 + 1
    
    Exit Sub
EHandler:
    Debug.Print Err.Description
    Resume Next
End Sub

実行すると、次のような文字列がイミディエイトウィンドウに表示されます。

>&で文字列と数値連結
あ12345
12345
>+で文字列と数値連結
型が一致しません。
型が一致しません。

>+で文字列と数値文字列連結
あ12345
12345
>+で数値文字列と数値を連結⇒加算
 12346 
 12346 

>+で数値と数値を連結⇒加算
 12346 

 

セルの連結

セル内の文字列も &または + で連結できます。
実際にはセルから文字列または数値を取り出して、その値に&または +が使用されます。
そのため、前項までの連結と同じ法則が適用されます。

次のようにシートに文字が入力されているケースを想定します。

次のコードは上記のシートの、セルの値を連結しています。

Sub test2()
    Dim string1 As String
    
    string1 = Cells(2, 2) & Cells(3, 2) _
                & vbCrLf & Cells(4, 2)

    Debug.Print string1
End Sub

実行すると、次のような文字列がイミディエイトウィンドウに表示されます。

こんにちは。いい天気ですね。
散歩にいきませんか?

 

&と+の動作まとめ

& と + での連結操作を表にまとめました。

値の型値の型& 連結+ 連結
結果結果
文字列文字列"あ" & "い""あい""あ" + "い""あい"
数値"あ" & 123"あ123""あ" + 123エラー
数値文字列"あ" & "123""あ123""あ" + "123""あ123"
数値文字列数値文字列"1" & "123""1123""1" & "123""1123"
数値数値文字列1 & "123""1123"1 + "123"124(加算)
数値1 & 123"1123"1 + "123"124(加算)

&の結果は必ず文字列になります。
一方、+ での連結結果は、文字列と数値のどちらかになります。

連結して文字列を得るときは、& を使用しましょう。

更新日:2023/12/01

書いた人(管理人):けーちゃん

スポンサーリンク

記事の内容について

null

こんにちはけーちゃんです。
説明するのって難しいですね。

「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。

裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。

掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。

ご意見、ご指摘はこちら。
https://note.affi-sapo-sv.com/info.php

 

このサイトは、リンクフリーです。大歓迎です。