
『Microsoft Excel』(以下Excel、エクセル)の中の機能としてある[VBA] について基本的な説明をしていきます。
仕事の改善や個人的な知識向上に役立ててください(^o^)
第6回目の今回は
・VBAで最終行・最終列の取得
について解説していきますので、よろしくお願いします。
前回までのVBAに関するINDEXは下記を参照してくださいね。
↓サブログ内部リンク(VBA用INDEX)↓
-
-
目次
Excel VBA講座-目次(INDEX)
サブローExcel VBAに関する説明を今後増やして行く予定なので、各リンクに飛ぶような目次(INDEX)を作りました。 随時更新していくので、よろしくお願いします。 スラスラ読めるExcel VBA ...
続きを見る
Endプロパティ
書式:オブジェクト.End(Direction)
データが入力されている範囲の上下左右の端のセルを取得します。
引数によりどちら側の端を指すのかを指定します。
※途中で空欄がある場合は一旦列、行の最終行に移動してから上、または左に移動してセルを取得する必要があります。(後述参照)
引数:Direction
① xlDown ⇨ 下端
② xlUp ⇨ 上端
③ xlToLeft ⇨ 左端
④ xlToRight ⇨ 右端
Offsetプロパティ
書式:オブジェクト.Offset([RowOffset],[ColumnOffset]
指定したセルの位置や範囲から引数で指定した数に応じて上下左右に移動します。
引数:RowOffset:行を移動する数を指定します。省略した場合は"0"になります。
引数:ColumnOffset:列を移動する数を指定します。省略した場合は"0"になります。
例1:Range("A1).Offset(1,2) ⇨A1セルの1行下、2行右のセル
例2:Range("C5).Offset(-1,-2) ⇨C5セルの1行上、2行左のセル
Rows.count
行数を表します。
Excel 2007以降の形式のブックならワークシートの行数はRows.Countというオブジェクト式で"1048576"が返されます。
Excel 97-2003形式のブックならワークシートの行数はRows.Countというオブジェクト式で"65536"が返されます。
Columns.Count
列数を表します。
Excel 2007以降の形式のブックならワークシートの列数はColumns.Countというオブジェクト式で"XFD(16384)"が返されます。
Excel 97-2003形式のブックならワークシートの列数はColumns.Countというオブジェクト式で"IV(256)"が返されます。
表の下端を選択
セルB2を基準に表の一番下のセルを選択します。
<構文例>
Sub 下選択()
Range("B2").End(xlDown).Select
End Sub
★「赤囲」から「青囲」へ移動
表の右端を選択
セルB2を基準に表の一番右のセルを選択します。
<構文例>
Sub 右選択()
Range("B2").End(xlToRight).Select
End Sub
★「赤囲」から「青囲」へ移動
表の上端を選択
セルB12を基準に表の一番上のセルを選択します。
<構文例>
Sub 上選択()
Range("B12").End(xlup).Select
End Sub
★「赤囲」から「青囲」へ移動
表の左端を選択
セルG122を基準に表の一番左のセルを選択します。
<構文例>
Sub 左選択()
Range("G12").End(xlToLeft).Select
End Sub
★「赤囲」から「青囲」へ移動
最終行の1つ下のセル取得(空欄がない場合)
セルB2を基準に表の最終行1つ下のセルを選択します。
<構文例>
Sub 最終行下選択()
Range("B2").End(xlDown).Offset(1,0).Select
End Sub
★「赤囲」から「青囲」へ移動
最終列の1つ右のセル取得(空欄がない場合)
セルB2を基準に表の最終列1つ右のセルを選択します。
<構文例>
Sub 最終列右選択()
Range("B2").End(xlToRight).Offset(0,1).Select
End Sub
★「赤囲」から「青囲」へ移動
最終行のセル取得(空欄がある場合)
セルB2を基準に表の最終行のセルを選択します。
B10セルが空欄なので、一旦最終行(1048576行)まで移動後、上方向に移動しアクティブな最初のセルを選択します。
<構文例>
Sub 最終行選択2()
Dim LastRow As Long
LastRow = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
ActiveSheet.Cells(LastRow, 2).Select
End Sub
★「赤囲」から最終行(1048756行)経由で「青囲」へ移動
最終列のセル取得(空欄がある場合)
セルB2を基準に表の最終列のセルを選択します。
F2セルが空欄なので、一旦最終列(XFD列)まで移動後、左方向に移動しアクティブな最初のセルを選択します。
<構文例>
Sub 最終列選択2()
Dim LastColumn As Long
LastColumn = ActiveSheet.Cells(2, Columns.Count).End(xlToLeft).Column
ActiveSheet.Cells(2, LastColumn).Select
End Sub
★「赤囲」から最終列(XFD列)経由で「青囲」へ移動
最終行の1つ下のセル取得(空欄がある場合)
セルB2を基準に表の最終行1つ下のセルを選択します。
B10セルが空欄なので、一旦最終行(1048576行)まで移動後、上方向に移動しアクティブな最初のセルを選択します。
その後、1つ下のセルに移動(オフセット)します。
<構文例>
Sub 最終行下選択2()
Dim LastRow As Long
LastRow = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row + 1
ActiveSheet.Cells(LastRow, 2).Select
End Sub
★「赤囲」から最終行(1048756行)経由で「青囲」へ移動
最終列の1つ右のセル取得(空欄がある場合)
セルB2を基準に表の最終列1つ右のセルを選択します。
F2セルが空欄なので、一旦最終列(XFD列)まで移動後、左方向に移動しアクティブな最初のセルを選択します。
その後、1つ右のセルに移動(オフセット)します。
<構文例>
Sub 最終列右選択2()
Dim LastColumn As Long
LastColumn = ActiveSheet.Cells(2, Columns.Count).End(xlToLeft).Column + 1
ActiveSheet.Cells(2, LastColumn).Select
End Sub
★「赤囲」から最終列(XFD列)経由で「青囲」へ移動

下のVBA講座も是非ご覧下さい!!
関連
前回のVBA講座(第5回)
高速化処理のテクニックをマスターしよう!【VBA入門講座#5】
関連
次回のVBA講座(第7回)