Excel・VBAではMergeメソッドを使用することでセルの結合を行うことができます。
この記事では、Mergeメソッドについて、
- 『Mergeメソッド』の基本的な使い方
を最初に説明します。その後、
- セル結合時にメッセージを表示させなくする方法
- 行単位で結合させる方法
- RangeではなくCellsを用いてセルを結合する方法
など少し応用的な内容も紹介していきます。
Mergeメソッドの使い方
Mergeメソッドでセルを結合するためには、次のように記述します。
例えば、セル「B2」~「D7」を結合したい場合には
と記述します。
プログラム例
Sub Mergeメソッド01() Range("B2:D7").Merge End Sub
セル結合時に確認メッセージを表示させなくする方法
プログラム
Sub Mergeメソッド02() Application.DisplayAlerts = False Range("B2:D7").Merge Application.DisplayAlerts = True End Sub
プログラム説明
セルを結合する範囲に値が2つ以上入力されているときには、次のような確認メッセージが表示されます。
この確認メッセージを表示させなくするためには、ApplicationオブジェクトのDisplayAlertsプロパティにFalseを指定する必要があります。
このプログラムでは、『Range("B2:D7").Merge』の前に
を記述します。
このままだと、今後確認メッセージが表示されなくなります。そのため、結合処理が終わった後は、
と、ApplicationオブジェクトのDisplayAlertsプロパティにTrueを指定する必要があります。
行単位でセルを結合させる方法
プログラム
Sub Mergeメソッド03() Range("B2:D7").Merge True End Sub
プログラム説明
Mergeメソッドの引数にはTrueとFalseがあります。
- Trueを指定する場合
- Falseを指定する場合
次のように記述します
この場合、セル「B2」~「D7」の行のみが結合されます。
次のように記述します
この場合、セル「B2」~「D7」の全てが結合されます。
引数を省略した場合のデフォルト値はFalseとなります。そのため、引数にはFalseを指定せずに省略し
と記述するのが一般的です。
ポイント
Call Range("B2:D7").Merge(True)
でも行単位で結合させることができます。
Cellsを用いてセルを結合する方法
プログラム
Sub Mergeメソッド05() Cells(2, 2).Resize(6, 3).Merge End Sub
プログラム説明
今まではRangeオブジェクトを使用してセルを結合していましたが、Cellsプロパティを使用して結合したい場合にはどのようにすればよいでしょうか。
Resizeプロパティを使用するとCellsを使用しても結合することができます。
Resizeプロパティを使用したセルの結合は次のように記述します。
これは、Cells(2,2)(←「B2」セル)から、下6行、右3列を結合するプログラムです。
このように結合したい範囲の左上のセルを指定した後に、結合したい範囲の行数と列数をResizeプロパティで指定します。
ポイント
Range(Cells(6, "A"), Cells(8, "B")).Merge
のようにRangeとCellsを組み合わせて使用しても同じように結合することができます。
ポイント
Cells(2, 2).Resize(6, 3).Merge True
or
Call Cells(2, 2).Resize(6, 3).Merge(True)
とResizeプロパティを使用した場合でも引数を設定でき、引数にTrueを指定すると行単位でセルが結合されます。
ポイント
RangeオブジェクトとResizeプロパティの組み合わせでも使用できます。
『Cells(2, 2).Resize(6, 3).Merge』は
Range("B2").Resize(6, 3).Merge
と記述しても同じ結果となります。