Home » Excel VBA Rangeオブジェクト » Offsetプロパティ » 1つ下のセルを選択する-.Offset(1, 0).Select

1つ下のセルを選択する-.Offset(1, 0).Select

対象:Excel2010, Excel2013, Windows版Excel2016

「項目の一つ下のセルをアクティブに vba」
「vba 一つ下のセルに移動」
といった検索キーワードによるアクセスがあります。

これらの検索キーワードでは、どのセルの1つ下なのかがハッキリしませんが、RangeオブジェクトのOffsetプロパティを使って、

VBAで1つ下のセルを選択する

アクティブなセルの1つ下のセルを選択するプロシージャをご紹介しておきます。

[スポンサードリンク]

Range.Offsetでアクティブセルの1つ下のセルを選択するサンプルマクロ

以下のSubプロシージャを実行すると、アクティブセルの1つ下のセルが選択されます。
Sub ひとつ下のセルをアクティブに()
 ActiveCell.Offset(1, 0).Select
End Sub

「excel2010 vba 一つ下のセル 選択 resize」
といった検索でのアクセスもあるのですが、利用するのはRange.Resizeプロパティではなく、

VBAで1つ下のセルを選択する

Range.Offsetプロパティです。

VBAで1つ下のセルを選択する

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オブジェクトに用意されているプロパティです。先のプロシージャは以下のようにオブジェクト変数を使って書くこともできます。
Sub 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

[スポンサードリンク]

Home » Excel VBA Rangeオブジェクト » Offsetプロパティ » 1つ下のセルを選択する-.Offset(1, 0).Select

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

検索


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

.