セルを結合するExcel VBAのコードをいくつかご紹介しました。
これらのマクロを作りながら、プログラミングに慣れているけれどExcelについてあまり詳しくない方が、作ってしまいがちなマクロがあると感じたので、記事にしておきます。
セルを横方向に結合するマクロです。
Excelの機能をご存知ない方が作ってしまいがちなマクロ
例えば、A1:C1セル・A2:C2セル・A3:C3セルをそれぞれ結合したい場合に、プログラミングに慣れているけれどExcelの機能をあまりご存知ない方の場合、
Sub bad_sample()
Dim i As Long
For i = 1 To 3
Range(Cells(i, "A"), Cells(i, "C")).Merge
Next
End Sub
といったマクロを作ってしまいがちです。
このマクロでも勿論、A1:C1セル・A2:C2セル・A3:C3セルをそれぞれ結合することができます。
ですがExcel VBAでは、ループ処理をしなくても、このような横方向のセル結合ができるのです。
ループ処理を使わないでセルを横方向に結合するサンプルマクロ
ループ処理を行わなくても、以下のような1行のコードで、A1:C1セル・A2:C2セル・A3:C3セルをそれぞれ結合できます。
Range("A1", "C3").Merge Across:=True
End Sub
ポイントはRange.Mergeメソッドの引数Acrossです。
Range.MergeメソッドにはAcrossという引数を指定することができて、Trueを指定すると横方向に結合が行われるのです。
引数・AcrossにFalseを指定した、
Range("A1", "C3").Merge Across:=False
というコードの場合、横方向の結合ではなく、A1:C3セルが一つのセルに結合されます。
Range.Mergeメソッドに引数を指定しない場合は、引数・AcrossにFalseが指定されたのと同じ動きをしているのです。
Excel VBAはExcel操作の自動化が目的
Excel・Word・PowerPointなどのVBAは、人が手で行う作業を楽にすること・自動化を大きな目的として持っていて、コーディングを行っているとこの根本思想を強く感じます。
ですから、ExcelにコマンドがあればVBAで簡単にコードを書くことができますし、簡単なVBAのコードで書くことのできる処理はコマンドが存在していることがほとんどです。
今回ご紹介した、セルを横に結合するコマンドは、Excel 2007からはリボン上にコマンドが存在し、2003以前のバージョンでも初期状態では表に出ていないだけでコマンドとしてはちゃんと存在しています。
そして、マクロ記録を行うと、
Selection.Merge True
といったコードが作られるのです。
最終更新日時:2023-04-11 14:57
Home » Excel VBA Rangeオブジェクト » 結合セル » VBAでセルを横方向に結合する-Range.Merge Across:=True