「項目の一つ下のセルをアクティブに vba」
「vba 一つ下のセルに移動」
といった検索キーワードによるアクセスがあります。
これらの検索キーワードでは、どのセルの1つ下なのかがハッキリしませんが、RangeオブジェクトのOffsetプロパティを使って、
アクティブなセルの1つ下のセルを選択するプロシージャをご紹介しておきます。
Range.Offsetでアクティブセルの1つ下のセルを選択するサンプルマクロ
以下のSubプロシージャを実行すると、アクティブセルの1つ下のセルが選択されます。ActiveCell.Offset(1, 0).Select
End Sub
「excel2010 vba 一つ下のセル 選択 resize」
といった検索でのアクセスもあるのですが、利用するのはRange.Resizeプロパティではなく、
Range.Offsetプロパティです。
Rangeオブジェクトを取得するプロパティはいくつもありますが、Range・Cells・ActiveCell・Range.Endにつづいて覚えるべきプロパティが、Range.Offsetです。
「ActiveCell.Offset(1, 0)」という式で、アクティブセルの1つ下のセルを表すRangeオブジェクトが取得でき、RangeオブジェクトのSelectメソッドで選択を行っています。
Range.Offsetプロパティの第1引数は行・第2引数は列
Range.Offsetプロパティの、第1引数には行方向にいくつオフセットする(ずらす)か、第2引数には列方向にいくつオフセットするか、それぞれ指定します。
先のプロシージャを、
ActiveCell.Offset(2, 0).Select
とすれば、アクティブセルの2つ下のセルが、
ActiveCell.Offset(0, 1).Select
とすれば、アクティブセルの右隣のセルが、それぞれ選択されることを確認しておきましょう。
.Offsetの前はRageオブジェクトを取得する式が必要
OffsetはRangeオブジェクトに用意されているプロパティです。先のプロシージャは以下のようにオブジェクト変数を使って書くこともできます。Dim rng As Range
Set rng = ActiveCell
rng.Offset(1, 0).Select
End Sub
このプロシージャの、
Set rng = ActiveCell
の部分を、
Set rng = Range("G7")
や、
Set rng = Cells(7, "G")
にして実行すると、いずれもG8セルが選択されます。
「Range("G7")」「Cells(1, "G")」という式が、G7セルを表すRangeオブジェクトを返し、そのRangeオブジェクトのOffsetプロパティの第1引数に「1」、第2引数に「0」が指定されているので、G7セルの1つ下のG8セルを表すRangeオブジェクトが返され、Range.Selectメソッドで選択されることを理解しておきましょう。
最終行の1つ下のセルを取得する場合
新規データを入力するセルを選択するために、データの入力されている最終行の1つ下のセルを取得する場合、
Set rng = Cells(Rows.Count, "A").End(xlUp)
となっているだけです。
最終更新日時:2019-01-09 14:32
- Newer:Rectangleにテキストを
- Older:VBAで前月の1日を取得する
Home » Excel VBA Rangeオブジェクト » Offsetプロパティ » 1つ下のセルを選択する-.Offset(1, 0).Select