文字列連結演算子「+」と「&」の相違点

Excel VBAには、2つの文字列連結演算子がある。「+」と「&」です。このページでは、「+」と「&」の相違点と、 エキスパート試験における重要ポイントについて説明する。

スポンサーリンク

文字列同士の結合

文字列同士をつなげる場合は、どちらの演算子も同じ働きをする。たとえば、次の2つのSubプロシージャを実行したとする。どちらの場合もメッセージボックスに「ExcelVBA」と表示される。

Sub Test1()
    MsgBox "Excel" & "VBA"
End Sub

Sub Test2()
    MsgBox "Excel" + "VBA"
End Sub

数値同士の結合

しかし、数値同士をつなげる場合は注意が必要だ。& 演算子の場合は、数値同士も文字列として結合する。たとえば、次のプロシージャ「Test1」を実行すると「1234」と表示される。

Sub Test1()
    '1234と表示される
    MsgBox 12 & 34
End Sub

しかし、+ 演算子を使った場合は結果が変わってくる。次のプロシージャ「Test2」を実行すると「46」と表示される。これは、数値同士の加算として処理されるためだ。

Sub Test2()
    '46と表示される
    MsgBox 12 + 34
End Sub
文字列を結合したい場合には + 演算子は使わないほうが無難だ。

注意が必要なケース

VBAエキスパート試験では、次のプロシージャの実行結果も分かるようにしておくことも重要だ。

Sub Test()
    MsgBox "12" + "34"
End Sub

メッセージボックスに表示されるのは「1234」と「46」のどちらだろうか。

その答えは……

 

 

「1234」だ。

さきほど + 演算子は数値同士の加算をすると述べた。しかし、"12" + "34" は数値がダブルクォーテーションで囲まれている。ダブルクォーテーションは、対象を文字列として扱う。よって、+ 演算子を使った場合でも、文字列としての結合が行われる。

練習問題

メッセージボックスに「11」と表示するSubプロシージャはどれか。次の中から正しいものを2つ選択しなさい。

  1. Sub Lesson()
    MsgBox "1 + 1"
    End Sub
  2. Sub Lesson()
    MsgBox "1" + "1"
    End Sub
  3. Sub Lesson()
    MsgBox 1 & 1
    End Sub
  4. Sub Lesson()
    MsgBox 1 + 1
    End Sub

正解を見る

2, 3

コメント