「excel vba currentregion 二行目」
という検索で、このサイト・インストラクターのネタ帳へのアクセスが、ありました。
Range.CurrentRegionプロパティで取得できる、
アクティブセル領域の、2行目のセルを表すRangeオブジェクトを取得する、VBA(Visual Basic for Applications)のコードを探している方による検索でしょうか。
アクティブセル領域内の2行目を取得・選択するサンプルマクロ
以下のようなマクロで、B2セルを含むアクティブセル領域の2行目を選択できます。
Range("B2").CurrentRegion.Rows(2).Select
End Sub例えば、B2:G7セルにデータが入力されていて、その回りがすべて空白セルだった場合、上記のマクロを実行すると、B2:G7というセル範囲の2行目であるB3:G3セルが選択されます。
Rowsプロパティで上位のオブジェクト式を省略したときと省略しないときの違い
Rowsプロパティは、グローバルメンバーでもあるため、上位のオブジェクト式を指定しないで書くこともよくあり、その場合はアクティブなワークシート全体から特定の行を表すRangeオブジェクトを取得できます。
例えば、
Rows(2).Select
というコードであれば、アクティブなワークシートの2行目を選択できます。
「Rows(2)」というオブジェクト式でアクティブなワークシートの2行目のセル全体を表すRangeオブジェクトを取得して、SelectメソッドでそのRangeを選択しているわけです。
このRowsプロパティを利用する際に、上位のオブジェクト式を省略せずにRangeオブジェクトを返す式を書いた場合、その返されたRangeオブジェクトの中から、指定された行を表すRangeオブジェクトを取得できるのです。
例えば、B2:G7セルにデータが入力されていて、まわりのセルが空白の場合、
上記マクロの、
Range("B2").CurrentRegion
というオブジェクト式は、B2:G7セルを表すRangeオブジェクトを返します。
このCurrentRegionプロパティで返されるRangeオブジェクトのRowsプロパティを使って、
Range("B2").CurrentRegion.Rows(2)
というオブジェクト式にすると、B2:G7セル内の2行目に該当するB3:G3セルを表すRangeオブジェクトが返されるのです。
そのRangeオブジェクトを選択しているのが、上記マクロの
Range("B2").CurrentRegion.Rows(2).Select
というコードです。
アクティブセル領域内の3列目を取得・選択するサンプルマクロ
列を表すRangeオブジェクトを取得・選択する場合も、考え方は同じです。
以下のようなマクロで、B2セルを含むアクティブセル領域の3列目を選択できます。
Range("B2").CurrentRegion.Columns(3).Select
End Sub列を表すRangeオブジェクトを取得するために、Columnsプロパティを使っているところだけが、先のRowsプロパティを使ったマクロと違っています。
Columnsプロパティも、Rowsプロパティと同じく上位のオブジェクト式に、Rangeオブジェクトを取得する式を書いた場合は、その取得したRangeオブジェクトから、指定された列を表すRangeオブジェクトを返します。
アクティブセル領域内の2行目3列目のセルを取得・選択するサンプルマクロ
行や列ではなく、単独のセルを表すRangeオブジェクトを取得・選択する場合も、考え方は同じです。
以下のようなマクロで、B2セルを含むアクティブセル領域の、2行目3列目のセルを選択できます。
Range("B2").CurrentRegion.Cells(2, 3).Select
End SubCellsプロパティも、Rowsプロパティ・Columnsプロパティと同じく上位のオブジェクト式に、Rangeオブジェクトを取得する式を指定した場合、指定されたセル範囲内の、Cellsプロパティの第1引数で指定された行・第2引数で指定された列で特定されるセルを表すRangeオブジェクトを返します。
Home » Excel VBA Rangeオブジェクト » CurrentRegionプロパティ » CurrentRegion・アクティブセル領域内の特定のRangeを取得する