Home » Excel VBA Rangeオブジェクト » Cellsプロパティ » VBAでセル範囲の最終行A列のセルを選択する

VBAでセル範囲の最終行A列のセルを選択する

対象:Excel2010, Excel2013, Windows版Excel2016

「範囲の最終行を取得してその行のa列をアクティブセルにする」
という検索キーワードでのアクセスがありました。

(具体的にどういう範囲かはわかりませんけれど)あるセル範囲の採集行のA列のセルを選択するには、どういうオブジェクト式(オブジェクトを取得するコード)を書けばいいのかを探していた方による検索です。

[スポンサードリンク]

セル範囲の最終行A列を選択するサンプルマクロ

以下のSubプロシージャが参考になるでしょう。

Sub セル範囲の最終行A列のセルを選択する()
 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)

 Cells(last.Row, "A").Select
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
です。

[スポンサードリンク]

Home » Excel VBA Rangeオブジェクト » Cellsプロパティ » VBAでセル範囲の最終行A列のセルを選択する

「Cellsプロパティ」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.