「vba mergearea.item」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
Excel VBA(Visual Basic for Applications)の「MergeArea.Item(xx)」といったコードを、どこかでご覧になった方による検索でしょう。
「MergeArea.Item」の意味がわからないので、何を表しているコードなのかを調べていたのではないか、と推測しています。
Range.ItemとはコレクションとしてのRangeから単一のRangeオブジェクトを取得するオブジェクト式
Excel VBAの場合、Itemは、コレクションオブジェクトから、単一オブジェクトを取得するときに利用するプロパティ(またはメソッド)です。
例えば「Workbooks.Item(1)」というオブジェクト式で、Workbooksコレクションから、1つ目のブックを表すWorkbookオブジェクトを取得できます。
「Worksheets.Item(1)」というオブジェクト式で、Worksheetsコレクションから、1つ目のワークシートを表すWorksheetオブジェクトを取得できます。
「Charts.Item(1)」というオブジェクト式なら、Chartsコレクションから、1つ目のグラフシートを表すChartオブジェクトを取得できます。
MergeArea.Item(xx)というオブジェクト式も、これらのオブジェクト式の仲間です。
MergeAreaはRangeオブジェクトを返すプロパティですから、「MergeArea.Item」というコードは結局「Range.Item」です。
つまり、結合されているセル範囲を表す、コレクションとしてのRangeオブジェクトから、単一のRangeオブジェクトを取得するために、Itemプロパティを利用しているのが「MergeArea.Item」というオブジェクト式です。
コレクションとしてのRangeから単一オブジェクトのRangeを取得するサンプルマクロ
コレクションとしてのRangeオブジェクトを意識したことのない方は、以下のようなマクロをまずは実行してみるほうが理解しやすいかもしれません。
Dim rng As Range
Dim i As Long
Set rng = Range("A1:B2")
For i = 1 To rng.Count
MsgBox rng.Item(i).Address(False, False)
Next i
上記のマクロを実行すると、「A1」「B1」「A2」「B2」というセルアドレスを表す文字列が、順番に表示されます。
A1:B2セルを表す、コレクションとしてのRangeオブジェクトを、オブジェクト変数・rngにセットしておいて、
Set rng = Range("A1:B2")
コレクションに含まれる単一オブジェクトの数だけFor~Nextループを回して、
For i = 1 To rng.Count
コレクションに含まれる単一オブジェクトをItemプロパティで順番に取得して、そのセル番地をRange.Addressプロパティで取得して、メッセージボックスに表示しています。
MsgBox rng.Item(i).Address(False, False)
ここで使っているItemプロパティが、MergeArea.ItemのItemと同じものです。
MergeArea.Itemを確認するサンプルマクロ
上記のマクロの動きを確認したら、本題のMergeArea.Itemを確認しましょう。
Dim rng As Range
Dim i As Long
Set rng = ActiveCell.MergeArea
For i = 1 To rng.Count
MsgBox rng.Item(i).Address(False, False)
Next i
例えば、C3:D4セルを結合しておいて、その結合したセルを選択した状態で上記のマクロを実行すると、「C3」「D3」「C4」「D4」というセルアドレスを表す文字列が、順番に表示されます。
このマクロは先ほどのマクロと、ほとんど同じです。
違っているのは、オブジェクト変数・rngにセル範囲をセットしている
Set rng = ActiveCell.MergeArea
の部分だけです。この部分が先のマクロでは
Set rng = Range("A1:B2")
になっていました。
結合されているセルは、見た目は1個のセルっぽくなっていますが、実際には複数のセルです。
VBAから見ると、コレクションとしてのRangeです。
Range.ItemはコレクションとしてのRangeから、単一のRangeを取得するオブジェクト式です。
Home » Excel VBA Rangeオブジェクト » 結合セル » MergeArea.Itemとは