構文
Range.MergeArea
結合したセルは単独のセルとは少し異なります。
結合セルは複数セルの集合体で行数や列数を取得したい場合はMergeAreaから取得可能です。
結合セルの情報を取得するサンプルコード
Public Sub test() '■セルA1~C5を結合する Range("A1:C5").Merge '■結合セルの各種情報を取得する Debug.Print Range("A1").MergeArea.Address '$A$1:$C$5 結合範囲 Debug.Print Range("A1").MergeArea.Count '15 結合されているセル数 Debug.Print Range("A1").MergeArea.Item(1).Address '$A$1 左上のセル Debug.Print Range("A1").MergeArea.Item(Range("A1").MergeArea.Count).Address '$C$5 右下のセル Debug.Print Range("A1").MergeArea.Rows.Count '5 行数 Debug.Print Range("A1").MergeArea.Columns.Count '3 列数 End Sub
注意点
- 結合セルというのは見た目だけは良いです。見た目だけは。
VBAで使う場合は注意しないと意図しない不具合を誘発します。
結合セルの初期化(ClearContents)のエラーを回避する
セルの結合は厄介?結合で実行結果が異なる【エクセルマクロ】 - 今回はRange(“A1”)とコードには書いていますが、実際はワークシートを付けて可読性を上げましょう。
ワークシート名を変数にSetし、短い名前で利用する【マクロ初級者必読】 - 今回はWith~End Withで括っていませんが、本来は括って可読性を上げましょう。
With~End Withで括ることで .MergeArea.Item(.Count).Addressのように短縮して可読性を上げられます。
関連記事
セルを結合/結合解除する【Mergeメソッド/UnMergeメソッド】【ExcelVBA】
「Ctrl+Shift+Q」で「セル結合・セル結合解除」をパーツ化する。【エクセルマクロ】
コメント