忍者ブログ
バイオインフォマティックス技術者試験、情報処理試験など、IT系の試験を基礎から勉強します。また、Javaなどプログラミングを勉強します。

【VBA】文字列結合(&)の使い方と落とし穴!「+」との違いとスペース挿入の注意点

VBAで文字と文字、あるいは文字と変数を繋ぎ合わせるときに使うのが &(アンパサンド) 演算子です。非常にシンプルですが、書き方によってはエラーになったり、予期せぬ計算結果になったりする「罠」が存在します。正しい使い方とよくあるミスを押さえておきましょう。

1. 基本文法:& 演算子

2つの値や変数を結合して、1つの文字列にします。数値と文字列を結合した場合も、全体が自動的に文字列として扱われます。

[ 構文 ]
結合結果 = 値1 & 値2

2. 実践サンプル:文字と数値の結合

ポイント:前後には必ず半角スペースを入れる

変数や文字列リテラルを `&` でスムーズにつなぐ基本のコードです。

Sub Macro1()
  Dim num As Long
  Dim str As String
  
  num = 100
  str = "個"
  
  ' 数値と文字を結合
  Debug.Print num & str
End Sub

3. 実行結果

数値と文字列が結合されて出力されます。

100個

4. 【閲覧注意】よくある2大「失敗例」とハマりポイント

失敗パターン1:「+」を使って足し算になってしまう(または型エラー)

VBAでは `+` でも文字列結合ができますが、数値と数値風の文字列を混ぜると足し算として計算される危険があります。さらに、純粋な文字が入ると「型が一致しません」エラーで止まります。
Debug.Print "10" + 20    ' 結果: 30 (結合されず足し算される!)
Debug.Print "10" & 20    ' 結果: 1020(& なら安全に結合される)

失敗パターン2:& の前後にスペースが無くて文法エラーになる

VBAの仕様上、変数の直後にスペースなしで `&` を書くと、16進数や型宣言記号(Long型の `&`)と誤認されてコンパイルエラー(赤字)になります。
Debug.Print num&str      ' 構文エラー!
Debug.Print num & str    ' 正解:& の前後に半角スペースを入れる

5. エンジニアの視点:「結合演算子は & 一択」が鉄則

1. 明示的なコード作成: 他言語(JavaScriptやJavaなど)の影響で `+` を使いたくなりますが、VBAにおいて文字列結合は必ず `&` を使うのが「いけいけ」な開発者の鉄則ルールです。意図しない型変換バグを完全に排除できます。
2. 大量結合のパフォーマンス: ループ内で何千回・何万回も `&` で文字列を連結すると処理が極端に重くなります。大規模なテキスト処理では、配列に一度格納してから `Join` 関数で一括結合する方が「理系」的で圧倒的に高速です。


6. まとめ

文字列結合は「`+` ではなく `&` を使う」「`&` の前後には半角スペースを開ける」という2点さえ押さえれば完璧です。基本だからこそ落とし穴に気をつけて、バグのないクリーンなVBAコードを書いていきましょう!


PR