「vba 結合セルの行数と列数を取得」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスが時折あります。
結合されたセルがあるときに、何行・何列のセルが結合されているのかを調べるには、どのようなコードを書けばいいのかを探している方による検索です。
結合セルの行数・列数を取得するサンプルマクロ
以下のようなマクロで結合セルの行数・列数を取得できます。
MsgBox ActiveCell.MergeArea.Rows.Count
MsgBox ActiveCell.MergeArea.Columns.Count
上記のマクロを実行すると、アクティブなセルが、2行・3列のセルを結合した状態だったときには、行数を表す「2」列数を表す「3」の順でメッセージボックスが表示されます。
アクティブなセルが結合セルではなかった場合には、行数を表す「1」列数を表す「1」の順でメッセージボックスが表示されます。
サンプルマクロで利用しているオブジェクト式について
RangeオブジェクトのMergeAreaプロパティで結合されているセル範囲を表すRangeオブジェクトを取得できますから、
「ActiveCell.MergeArea」というオブジェクト式で、アクティブなセルの、結合されているセル範囲を表すRangeオブジェクトを取得できます。
RangeオブジェクトのRowsプロパティで行を表すRangeオブジェクトを取得できますから、
「ActiveCell.MergeArea.Rows」というオブジェクト式で、アクティブなセルの、結合されているセル範囲の、行を表すRangeオブジェクトが取得できます。
最終的にRangeオブジェクトのCountプロパティを使った、
「ActiveCell.MergeArea.Rows.Count」というオブジェクト式で、アクティブなセルの、結合されているセル範囲の、行を表すRangeオブジェクトのCountプロパティで、行を表すRangeオブジェクトの数、すなわち結合セルの行数を取得できます。
列数のほうは、行数と考え方は同じで、途中に登場するプロパティが列を表すRangeオブジェクトを返すColumnsになっているので、
「ActiveCell.MergeArea.Columns.Count」というオブジェクト式で、アクティブなセルの、結合されているセル範囲の、列を表すRangeオブジェクトの数、なわち結合セルの列数を取得できるわけです。
Home » Excel VBA Rangeオブジェクト » 結合セル » VBAで結合セルの行数・列数を取得する