Excel VBAの、結合セルに関する2つのプロパティRange.MergeCellsとRange.MergeAreaの違いについて、ご紹介しています。
同じく結合セルに関して、MergeCellsとMergeの違いが気になる方も少なくないようです。
このサイト『インストラクターのネタ帳』へも、
「vba mergecells merge 違い」
といった検索キーワードで時折アクセスがあります。
MergeCellsはプロパティ・Mergeはメソッド
最初に、MergeCellsはプロパティで、Mergeはメソッドだということをお伝えします。
オブジェクトブラウザーの、メンバーペインのアイコンや詳細ペインの「Property」「Sub」といった表示から、
MergeCellsがプロパティで、Mergeがメソッドだということが読み取れます。
Range.MergeCellsは結合セルかどうかを返すプロパティ
MergeCellsは、Rangeオブジェクトが結合セルかどうかを返すプロパティで、結合セルのときにTrueを返してくれます。
例えば、A1:B1セルが結合されているときに、以下の3つの式はいずれもTrueを返します。
Range("A1").MergeCells Range("B1").MergeCells Range("A1:B1").MergeCells
アクティブシートのA1:B1セルを結合しておいてから、イミディエイトウィンドウでコードを実行すると、以下のような結果になることをご確認ください。
? Range("A1").MergeCells True ? Range("B1").MergeCells True ? Range("A1:B1").MergeCells True
A2セルが結合されていなければ、以下のようにRange.MergeCellsプロパティはFalseを返します。
? Range("A2").MergeCells False
Rangeオブジェクトが結合セルだったときにTrueを、結合セルでなければFalseを返すのが、MergeCellsプロパティです。
MergeCellsは設定も可能なプロパティ
MergeCellsプロパティは読み取り専用のプロパティではなく、設定も可能です。
読み取り専用のプロパティであれば、MergeAreaのようにオブジェクトブラウザーの詳細ペインに「読み取り専用」と表示されますが、
MergeCellsの詳細ペインには下図のとおり「読み取り専用」表示がありません。
A1:B1セルが結合されているときに、
Range("A1:B1").MergeCells = False
または、
Range("A1").MergeCells = False
あるいは、
Range("B1").MergeCells = False
を実行すると、A1:B1セルの結合が解除されます。
逆に、アクティブシートのA1:B1セルが結合されていないときに
Range("A1:B1").MergeCells = True
を実行すると、A1:B1セルが結合されます。
Range.Mergeはセルを結合するメソッド
Mergeはメソッドで、呼び出すとセルの結合が行われます。
A1セル・B1セルが、結合されていない単独セルのときに、
Range("A1:B1").Merge
を実行すると、A1:B1が結合されます。
Home » Excel VBA Rangeオブジェクト » 結合セル » MergeCellsとMergeの違い