【VBA】文字列の連結には「+」ではなく「&」の使用がお勧め

VBAでは&演算子または+演算子を使用することで文字列の連結ができます。

しかし、+演算子は式のデータ型によって文字列の連結ではなく数値の加算を行うことがあります。なので文字列の連結には&演算子を使用することをお勧めします。

&演算子、+演算子の違い

&演算子は文字列の連結のみを行いますが、+演算子は式のデータ型で挙動が変わります。

Dim result As String
Dim strVal As String : strVal = "12"
Dim lngVal As Long : lngVal = 3

' [+演算子] 一方の式がString型で、もう一方が数値だと加算になる。
result = strVal + lngVal        ' 結果は"15"となる。

' [+演算子] 両方の式がString型ならば連結になる。
result = strVal + CStr(lngVal)  ' 結果は"123"となる。

' [&演算子] 一方の式がString型で、もう一方が数値でも連結になる。
result = strVal & lngVal        ' 結果は"123"となる。

私の体験談として、文字列の連結をすべき場所で、+演算子を使用しているせいで加算が行われてしまい、意図した動作になっていないコードを見たことがあります。気を付けましょう。

あいまいさを無くすためにも

コードを読むときに、+演算子が加算を行うのか、それとも文字列の連結を行うのか判断しにくい場合があります。文字列の連結に&演算子を使用することで意図を明確にすることができます。

タイトルとURLをコピーしました