VBA入門
文字の結合(&アンパサンド)と継続行(_アンダーバー)

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
最終更新日:2021-06-09

第14回.文字の結合(&アンパサンド)と継続行(_アンダーバー)


あるセルの文字と、あるセルの文字をくっつけて、別のセルに表示する、
よくある事例であり、頻繁に行われることです。


A1セルに"abc"
B1セルに"123"
この時に、
C1セルに"abc123"を入れるような場合のマクロVBAになります。

シートでは、
C1セルに、
=A1&B1
これでC1に"abc123"と表示されます。
VBAでも同様に&で文字列をつなげることができます。

文字結合&(アンパサンド)



Sub 練習1()
  Cells(1, 3).Value = Cells(1, 1).Value & Cells(1, 2).Value
End Sub
[.Value]は省略可能です。

&(アンパサンド)でつなげます。
これは、ワークシートの関数と同じです。
C1セルに、=A1&B1 これと同じです。

+(プラス)でつなげることもできます。
Cells(1, 3).Value = Cells(1, 1).Value + Cells(1, 2).Value
このように書く事も出来ますが、セルの値が数値同士の場合は足し算になってしまいます。

文字と文字の結合の場合は、&(アンパサンド)を使って下さい。
また、文字リテラルを結合することもできます。

Sub 練習2()
  Cells(1, 3).Value = Cells(1, 1).Value & "xyz"
End Sub


上記では、A1セルの文字の後ろに、"xyz"を結合して、C3セルに入れています。
先の例なら、C3セルには、"abcxyz"と入ります。


+演算子について
VBAでは+演算子でも文字列同士なら文字列連結できます。
ただし、連結対象の片方が数値型の場合は加算が行われます。
このような曖昧さを残さないためにも、文字列連結は&を使用してください。
VBAの演算子まとめ(演算子の優先順位)
VBAの演算子はそれほど多くはないので通常使う範囲では困ることは少ないのですが、他人の書いたVBAで特殊な使い方がされていた場合等で悩むことは結構あるかもしれません。そのような時の参考として演算子のまとめになります。VBA入門の以下の解説ページの演算子についてのまとめと補足です。

継続行

&ではいくつでも結合することができます。



Sub 練習3()
  Cells(1, 6).Value = Cells(1, 1).Value & Cells(1, 2).Value & Cells(1, 3).Value & Cells(1, 4).Value & Cells(1, 5).Value
End Sub


上記では、A1セルからE1セルまでを結合して、F1セルに入れています。
しかし、これでは、少々見づらいです。
VBEの画面を右にはみ出してしまいます。
そこで、見易いように適当に改行を入れる事が出来ます。

Sub 練習3()
  Cells(1, 6).Value = Cells(1, 1).Value & _
            Cells(1, 2).Value & _
            Cells(1, 3).Value & _
            Cells(1, 4).Value & _
            Cells(1, 5).Value
End Sub


空白(半角スペース)に続けて_(アンダーバー)を書くと、次の行に続けて書く事が出来ます。

書いている事は、全く同じですが、
VBEの画面横幅を考えて、見易い位置で改行するようにして下さい。

この継続行を使えるのは、&に限りません。
任意の場所で行を継続させることができます。
ただし、任意の場所と言っても、どこでも良いと言う訳ではありません。
単語の途中で行を変えて継続することはできません。
括弧()やカンマ,や演算子(=+-*/&)で区切られる場所で行を変えて継続させることが出来ます。



同じテーマ「マクロVBA入門」の記事

第38回.セルに計算式を設定(Formula)
第12回.変数宣言のDimとデータ型
第13回.定数宣言のConstと型宣言文字
第14回.文字の結合(&アンパサンド)と継続行(_アンダーバー)
第15回.四則演算と注釈(コメント)
第16回.繰り返し処理(For Next)
第17回.繰り返し処理(Do Loop)
第18回.最終行の取得(End,Rows.Count)
第19回.総合練習問題1
第20回.条件分岐(IF)
第21回.条件分岐(ElseIf)


新着記事NEW ・・・新着記事一覧を見る

エクセル馬名ダービー|エクセル雑感(2021-07-21)
在庫を減らせ!毎日棚卸ししろ!|エクセル雑感(2021-07-05)
日付型と通貨型のValueとValue2について|エクセル雑感(2021-06-26)
DXってなんだ? ITと何が違うの?|エクセル雑感(2021-06-24)
エクセルVBA 段級位 目安|エクセル雑感(2021-06-21)
ローカル版エクセルが「Office Scripts」に変わる日|エクセル雑感(2021-06-10)
新関数SORTBYをVBAで利用するラップ関数を作成|VBA技術解説(2021-06-12)
VBA今日のひとこと/VBA今日の教訓 on Twitter|エクセル雑感(2021-06-10)
VBAの演算子まとめ(演算子の優先順位)|VBA技術解説(2021-06-09)
画像が行列削除についてこない場合の対処|VBA技術解説(2021-06-04)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.Excelショートカットキー一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.RangeとCellsの使い方|VBA入門
5.繰り返し処理(For Next)|VBA入門
6.マクロって何?VBAって何?|VBA入門
7.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
8.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
9.セルに文字を入れるとは(Range,Value)|VBA入門
10.とにかく書いてみよう(Sub,End Sub)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ