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つ選択しなさい。
Sub Lesson()
MsgBox "1 + 1"
End SubSub Lesson()
MsgBox "1" + "1"
End SubSub Lesson()
MsgBox 1 & 1
End SubSub Lesson()
MsgBox 1 + 1
End Sub
正解を見る
2, 3
コメント