Home » Excel VBA Rangeオブジェクト » 結合セル » MergeCellsとMergeAreaの違い

対象:Excel2010, Excel2013, Windows版Excel2016

Excel VBAで、もう少しどうにかならなかったのかな、と思う識別子があります。

その筆頭はRowsプロパティとRowプロパティです。

RowsプロパティはRangeオブジェクトを返し、Rowプロパティは長整数型の数値を返すという大きな違いがあるにも関わらず、よく似た名前ですからExcel VBAに慣れていない方が混乱するのも当然だと感じます。

同じく、もう少しどうにかならなかったのかと感じるプロパティに、

MergeArea
MergeCells

があります。

このサイト『インストラクターのネタ帳』へ、
「mergecells と mergearea の違い」
といった検索キーワードでのアクセスもあります。
この検索をなさった方の気持ちも、よくわかります。

MergeCellsとMergeAreaの違い

結論からお伝えすると、
Range.MergeCellsプロパティは、セル結合されているかどうかを、論理値で返します。
これに対して、
Range.MergeAreaプロパティは、結合されているセル範囲を表す、Rangeオブジェクトを返します。

MergeCellsとMergeAreaの違いをイミディエイトウィンドウで確認する

Range.MergeCellsとRange.MergeAreaの違いを、イミディエイトウィンドウで確認してみましょう。

例えば、A1:C1セルを結合してアクティブな状態で、イミディエイトウィンドウに

? ActiveCell.MergeCells

と入力して[Enter]キーを押せば、

True

が出力され、

? ActiveCell.MergeArea.Address

と入力して[Enter]キーを押せば、

$A$1:$C$1

が出力されます。

イミディエイトウィンドウに出力できるのは文字にできるデータだけ

Range.MergeAreaプロパティはRangeオブジェクトを返す一方、イミディエイトウィンドウに出力できるのは、文字列に変換できるデータだけですから、

? ActiveCell.MergeArea

と入力して[Enter]キーを押したときには
「実行時エラー'13': 型が一致しません。」
とエラーが表示されてしまいます。

そのため結合されているセル範囲を確認しやすい、セルアドレス(文字列)を返すRange.Addressプロパティを使って、

? ActiveCell.MergeArea.Address

としています。

2種類のプロパティ

プロパティは2種類あることを知っておきましょう

拙著『いちばんやさしいExcel VBAの教本』の、Lesson 52「プロパティは2種類あることを知っておきましょう」に、

プロパティは、大きく2種類に分類できます。オブジェクトが持つ単なるデータを取得するためのプロパティと、オブジェクトを取得するためのプロパティです。

と書きました。

MergeCellsがTrue/Falseという単なるデータを取得するためのプロパティで、MergeAreaがオブジェクトを取得するためのプロパティです。

前述したRowが単なるデータを取得するためのプロパティで、Rowsがオブジェクトを取得するためのプロパティであるのと、似た関係でもあります。

Range.MergeCellsプロパティがTrue/Falseを返すこと、Range.MergeAreaプロパティがRangeオブジェクトを返すことを、強くイメージしておきましょう。

最終更新日時:2019-06-19 11:48

[スポンサードリンク]

Home » Excel VBA Rangeオブジェクト » 結合セル » MergeCellsとMergeAreaの違い

「結合セル」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.