- 締切済み
ExcelVBAで、マージのコレクションの取得
ExcelVBAで、任意のセル範囲内に含まれる(完全に含まれる、一部が含まれるは問題視していません)結合セルのコレクションの取得って出来るのでしょうか?やっぱり、RangeのEachループで、MergeAreaの戻り値を検証するしかないのでしょうか?SpecialCellsメソッドみたいなので無いのでしょうか?宜しくお願いします。 例:Range("A1:"K30")のセル範囲を選択している状態で、その範囲内にRange("B2:C4")、Range("E9:F12)、Range("H16:H20")のセル範囲が結合状態にある場合にその結合されているセル範囲を取得したいのですが!!
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 コレクション(Collection)というのは、同系のオブジェクトの集合体で、ワークシートのRange オブジェクトは、どんなに収集しても、コレクションにならなかったと思います。どこかの教本で読んだ覚えがあります。 >その結合されているセル範囲を取得したいのですが!! それは、単なるエリアであり、Range オブジェクトだと思います。 つまらない話を書きましたが、コードも一緒につけておきます。 Sub getMargeCells() Dim c As Range Dim ur As Range On Error GoTo ErrHandler For Each c In ActiveSheet.Range("A1:K30") If c.MergeCells Then Set ur = Union(ur, c.MergeArea) End If Next c ur.Select Set ur = Nothing Exit Sub ErrHandler: Set ur = c Resume Next End Sub
- pkh4989
- ベストアンサー率62% (162/260)
こんにちは。 >SpecialCellsメソッドみたいなので無いのでしょうか? ないようですね。 以下は、RangeをFor Eachループで取得する例です。ご参考に・・・ Sub MergeCell取得() Dim wRange As Range Dim c As Range ' Set wRange = Nothing With ActiveSheet For Each c In .Range("A1:K30") If c.MergeCells Then 'MsgBox c.Address & " " & c.MergeArea.Address If wRange Is Nothing Then Set wRange = .Range(c.Address(1, 1)) Else Set wRange = Application.Union(wRange, .Range(c.Address(1, 1))) End If End If Next End With If Not wRange Is Nothing Then MsgBox wRange.Address End If End Sub