1つ下のセルはOffset(1, 0)やCellsやRangeで選択

Offsetプロパティを使うと、基準となるセルから1つ下のセルを選択したり参照することが出来ます。

Offsetプロパティでの隣のセルの考え方は「VBAで隣のセルを参照する」に詳しく書いていますのでご参照ください。

「1つ下」というのは、新しい行に新しいデータを入力する、という事前処理を意味することが多いと思います。

そのため、「1つ下」という意味には、現在位置を示すアクティブセルを基準とする場合と、入力済みのデータの中で一番下を基準とする場合の、大きく2通りが考えられます。

アクティブセルの1つ下であればOffsetプロパティを使って選択できますが、選択範囲の1つ下の場合はOffsetを使うと選択範囲自体が1つ下に移動する形になるため、「1つ下のセル」を選択するのであればOffsetではなくCellsプロパティやRangeプロパティで指定することになります。

ここではそれぞれについて説明します。

アクティブセルの1つ下のセルを選択する

アクティブセルの1つ下のセルを選択するのであれば、以下のように1行で書けます。

 

選択範囲の1つ下のセルを選択する

選択セル範囲の1つ下のセルを選択するのであれば、選択範囲の行数と開始行を加算した値が次の行の位置になります。

ここでは選択範囲の行数+開始行と、列位置を事前に取得して、Cellsプロパティでセル位置を指定してから選択しています。

 

シートで入力されている最終行の1つ下のセルを選択する

ワークシートで入力済みの範囲の最終行の1つ下のセルを指定するには、「入力済みの範囲」を判定する必要があります。

入力済みの範囲はUsedRangeプロパティで取得することができるため、その範囲の1つ下のセルを指定することで、最終行の1つ下のセルを選択することができます。

ここではコードを短縮するためにRangeオブジェクトの変数rに入力済み範囲のUsedRangeをコピーして書いています。

もちろん変数にコピーせずに、上のサンプルのSelection.Rows.CountのようにActiveSheet.UsedRange.Rows.Countと書いても構いません。