「範囲の最終行を取得してその行のa列をアクティブセルにする」
という検索キーワードでのアクセスがありました。
(具体的にどういう範囲かはわかりませんけれど)あるセル範囲の採集行のA列のセルを選択するには、どういうオブジェクト式(オブジェクトを取得するコード)を書けばいいのかを探していた方による検索です。
セル範囲の最終行A列を選択するサンプルマクロ
以下のSubプロシージャが参考になるでしょう。
Dim area As Range
Set area = Range("B2:G7")
Dim cnt As Long
cnt = area.Count
Dim last As Range
Set last = area.Item(cnt)
End Sub
上記プロシージャの、
Set area = Range("B2:G7")
の右辺を変更すれば、どんなセル範囲にも対応できます。
例えば、
Set area = Selection
であれば、選択されているセル範囲の最終行A列の選択に、
Set area = Range("A1").CurrentRegion
にすれば、A1セルのアクティブセル領域の最終行A列の選択となります。
サンプルマクロの解説
最初の、
Dim area As Range
Set area = Range("B2:G7")
でRange型のオブジェクト変数areaに、セル範囲をセットします。
次の、
Dim cnt As Long
cnt = area.Count
で、オブジェクト変数areaに含まれるセルの個数(つまりセル範囲に含まれるセルの個数)を、Long型の変数cntに代入します。
RangeオブジェクトのItemプロパティの引数にセルの個数を指定することで、
Dim last As Range
Set last = area.Item(cnt)
セル範囲の最終セルを表すRangeオブジェクトを取得できるので、そのRangeオブジェクトをオブジェクト変数lastにセットしています。
Cellsプロパティの2つの引数(厳密にはRangeオブジェクトの既定プロパティ)に、RangeオブジェクトのRowプロパティで取得した行番号(last.Row)と、文字列「A」を指定することで、セル範囲最終行A列のセルを表すRangeオブジェクトを取得して、Range.Selectメソッドで選択しています。
Cells(last.Row, "A").Select
変数を使わない場合
ちなみに、変数を一切使わないのであれば、
Cells(Range("B2:G7").Item(Range("B2:G7").Count).Row, "A").Select
と書くこともできます。
さすがに変数をまったく使わないと読み辛いので、Withステートメントを使うと、
With Range("B2:G7")
Cells(.Item(.Count).Row, "A").Select
End With
です。
- Newer:VBAでグラフ凡例の枠線色を変更する
- Older:CurrentRegionの先頭セルを取得する
Home » Excel VBA Rangeオブジェクト » Cellsプロパティ » VBAでセル範囲の最終行A列のセルを選択する