Endプロパティ
Rangeオブジェクトで指定されている範囲の領域における終端のRangeオブジェクトを返します。
ワークシート上のショートカットで言うところの、「Ctrl+カーソルキー」で飛ぶところですね。
xlUp・・・上方向
xlToRight・・・右方向
xlToLeft・・・左方向
xlDown・・・ 下方向
使い方
次のようなシートがあった場合、A1を基準にEndプロパティでそれぞれどのセルが取得出来るか確認してみます。
まずは、A1基準に、Endプロパティの引数に「xlDown」を指定します。
動画で分かるように、Endプロパティで取得した場所をSelectします。
Sub sample()
'シートの指定
Dim sheet As Worksheet
Set sheet = ThisWorkbook.Sheets("Resize")
'セルA1を基準に
sheet.Range("A1").End(xlDown).Select
End Sub
動画で動きを確認しましょう。
A1セルから「Ctrl+↓」で飛んでくところと同じですね。
次は、A1基準に、Endプロパティの引数に「xlToRight」を指定します。
Sub sample()
'シートの指定
Dim sheet As Worksheet
Set sheet = ThisWorkbook.Sheets("Resize")
'セルA1を基準に
sheet.Range("A1").End(xlToRight).Select
End Sub
動画で確認します。
問題ないですね(^o^)
ちなみに、表の中に空白があると挙動がおかしくなるので注意してください。
Sub sample()
'シートの指定
Dim sheet As Worksheet
Set sheet = ThisWorkbook.Sheets("Resize")
'セルA1を基準に
sheet.Range("A1").End(xlDown).Select
End Sub
最初と同じコード(A1から下方向)で、次の空白を入れた表で試します。(A7セルが空白)
A6セルで止まってしまいました。
ワークシートで操作する場合を考えると、そりゃそうだって感じですね。
では、こういった空白があるかもしれないけど表の最終行や最終列を取得したい場合もあるかと思います。
そういったときは、
最終行の場合は
Rows.Count
最終列の場合は
Coplulmns.Count
を使います。
これらは、シートの全行、全列の数です。
Rows.Countは、1048576
Columns.Countは、16384
です。
これを利用してそれぞれ、
Cells(Rows.count, 1)の場所から、上方向に(.End(xlUp))飛べば表の一番下のセル
Cells(1, Columns.Count)の場所から、左方向に(.End(xlToLeft))飛べば表の一番右端が取得出来ますね(^o^)
やってみましょう!
さっきの空白ありの表で、Cells(Rows.Count, 1)から飛ばします。
※ちなみに、この「1」は1列目の意味なので、2列めのRoes.Countから飛ばしたい場合は、Cells(Rows.Count, 2)としてくださいね。
Sub sample()
'シートの指定
Dim sheet As Worksheet
Set sheet = ThisWorkbook.Sheets("Resize")
'セルA1を基準に
sheet.Cells(Rows.Count, 1).End(xlUp).Select
End Sub
実行してみましょう!
出来ました!
まとめ
このような、表の終端を取得するのは実務でかなり頻出ですのでしっかり覚えときましょう!
コメント