【VBA】セルの結合を行う『Mergeメソッド』の使い方

スポンサーリンク

Excel・VBAではMergeメソッドを使用することでセルの結合を行うことができます。

この記事では、Mergeメソッドについて、

  • 『Mergeメソッド』の基本的な使い方

を最初に説明します。その後、

  • セル結合時にメッセージを表示させなくする方法
  • 行単位で結合させる方法
  • RangeではなくCellsを用いてセルを結合する方法

など少し応用的な内容も紹介していきます。

Mergeメソッドの使い方

Mergeメソッドの使い方

Mergeメソッドでセルを結合するためには、次のように記述します。

Range("結合したい範囲の左上のセル : 結合したい範囲の右下のセル").Merge

例えば、セル「B2」~「D7」を結合したい場合には

Range("B2:D7").Merge

と記述します。

プログラム例

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 = False

を記述します。

このままだと、今後確認メッセージが表示されなくなります。そのため、結合処理が終わった後は、

Application.DisplayAlerts = True

と、ApplicationオブジェクトのDisplayAlertsプロパティにTrueを指定する必要があります。

行単位でセルを結合させる方法

プログラム

Sub Mergeメソッド03()
    Range("B2:D7").Merge True
End Sub

プログラム説明


行単位で結合させる方法

Mergeメソッドの引数にはTrueFalseがあります。

  • Trueを指定する場合
  • 次のように記述します

    Range("B2:D7").Merge True

    この場合、セル「B2」~「D7」の行のみが結合されます。

  • Falseを指定する場合
  • 次のように記述します

    Range("B2:D7").Merge False

    この場合、セル「B2」~「D7」の全てが結合されます。
    引数を省略した場合のデフォルト値はFalseとなります。そのため、引数にはFalseを指定せずに省略し

    Range("B2:D7").Merge

    と記述するのが一般的です。

ポイント

Call Range("B2:D7").Merge(True)
でも行単位で結合させることができます。

Cellsを用いてセルを結合する方法

プログラム

Sub Mergeメソッド05()
  Cells(2, 2).Resize(6, 3).Merge
End Sub

プログラム説明


Cellsを用いてセルを結合する方法

今まではRangeオブジェクトを使用してセルを結合していましたが、Cellsプロパティを使用して結合したい場合にはどのようにすればよいでしょうか。

Resizeプロパティを使用するとCellsを使用しても結合することができます。

Resizeプロパティを使用したセルの結合は次のように記述します。

Cells(2, 2).Resize(6, 3).Merge

これは、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
と記述しても同じ結果となります。

スポンサーリンク