Endプロパティ
データが入力されているセル範囲の終端セルを参照するにはEndプロパティを利用します。
Endプロパティは、親オブジェクトとしてセルを示すRangeオブジェクトを指定する必要があります。
引数には移動する方向を指定します。XLDirection列挙型の定数を利用します。
xlDown:下
xlUp:上
xlToLeft:左
xlToRight:右
Excelのショートカットの「End + ↑」、「End + ↓」、「End + →」、「End + ←」と同じ動きになります。
途中に空白セルがある場合
Endプロパティは空白セルがあると、それ以降のセルにデータが入力されていても、空白セルの直前のセルを参照します
言い方を変えれば、空白セルを検索するためのプロパティです。
以下のコードはA1セルを基準に、下方向に空白セルの直前のセルを選択します。
1 2 3 |
Sub EndTest() Range("A1").End(xlDown).Select End Sub |
基準セルが空白セルの場合
終端セルを探す基準セルが空白セルの場合、Endプロパティを使うと直近でデータが入力されているセルを参照します。
この特性を利用すると、最下段から上に向かってEndプロパティを実行したり、最右列から左に向かってEndプロパティを実行すると、データが入力されている終端セルを参照します。
最下段から上方向にEndプロパティで参照
以下の例はA列でデータが入力されているセルの内、一番下の行にあるセルを選択するコードです。
1 2 3 |
Sub EndTest2() Range("A" & CStr(Range("A:A").Rows.Count)).End(xlUp).Select End Sub |
最右列から左方向にEndプロパティで参照
以下の例は1行目でデータが入力されているセルの内、一番の行にあるセルを選択するコードです。
1 2 3 |
Sub EndTest3() Cells(1, Range("1:1").Columns.Count).End(xlToLeft).Select End Sub |
基準セルから終端セルの間に空白セルがある場合
Endプロパティを使用した場合に空白セルがあるとそこで止まってしまうため、正しい終端セルを取得できません。
上で紹介した最下段から上方向に検索する方法などではセルの終端は分かりますが、それが表の終端とは限りません。
このようにデータが確実に入力されているかどうかが分からない場合や表の終端を参照したい場合は、Endプロパティではなく、CurrentRegionプロパティやSpesialCellsプロパティやUsedRangeプロパティのいずれかを利用します。
別ページ「VBAで編集セル範囲の選択と最終行と最終列の取得」に詳細を書いていますのでこちらを参照ください。