【VBA】結合セルかどうかを判定して、結合範囲を取得する方法|MergeCellsとMergeAreaの活用

Excelで作成された表には、複数のセルが結合されている箇所がよくあります。VBAでこれらを操作する際には、「そのセルが結合されているか」「結合範囲全体を取得できるか」を正しく判定・制御することが重要です。

本記事では、VBAでセルが結合されているかどうかを調べる方法と、結合された範囲を取得する方法をわかりやすく解説いたします。


目次

結合セルの判定と範囲の取得コード例

Dim checkRange As Range
Set checkRange = Range("E5:F6")

If checkRange.MergeCells = True Then
    MsgBox "結合セルの範囲:" & checkRange.Cells(1).MergeArea.Address
Else
    MsgBox "このセルは結合されていません。"
End If

コードの解説

1. MergeCells プロパティで結合セルかを判定

  • checkRange.MergeCells
     → True の場合、checkRange に指定した範囲が結合セルを含んでいることを意味します。

2. MergeArea プロパティで結合範囲を取得

  • checkRange.Cells(1).MergeArea
     → 結合されている場合、**結合されている範囲全体(最初のセルに基づく)**を取得します。

3. Address プロパティで範囲を表示

  • .Address によって、結合されたセル範囲の**アドレス文字列(例:$E$5:$F$6)**を取得して、メッセージボックスに表示します。

実行例と動作確認

例1:セル E5:F6 が結合されている場合

結合セルの範囲:$E$5:$F$6

例2:結合されていない場合

このセルは結合されていません。

応用:結合セルを解除するには?

結合セルを判定したうえで、結合を自動的に解除したい場合は以下のように書くこともできます。

If checkRange.MergeCells = True Then
    checkRange.UnMerge
End If

まとめ

処理内容使用プロパティ説明
結合セルの判定MergeCellsTrueなら結合されている
結合範囲の取得MergeArea最初のセルから結合全体を取得
アドレス表示.Address範囲を文字列として取得
結合の解除.UnMerge自動で結合を解除

VBAで結合セルを扱う場面は、印刷書式・帳票・表形式データの自動処理など多岐にわたります。
MergeCellsMergeArea を正しく使いこなすことで、柔軟かつ安全な処理が可能となります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次