Excel Microsoft VBA

最終行・最終列の取得方法【VBA入門講座#6】

サブロー
こんにちは。サブローです。

『Microsoft Excel』(以下Excel、エクセル)の中の機能としてある[VBA] について基本的な説明をしていきます。

仕事の改善や個人的な知識向上に役立ててください(^o^)

第6回目の今回は

・VBAで最終行・最終列の取得

について解説していきますので、よろしくお願いします。

前回までのVBAに関するINDEXは下記を参照してくださいね。

↓サブログ内部リンク(VBA用INDEX)↓

Excel VBA講座-目次(INDEX)

サブローExcel VBAに関する説明を今後増やして行く予定なので、各リンクに飛ぶような目次(INDEX)を作りました。 随時更新していくので、よろしくお願いします。 目次(INDEX) 講座No内容 ...

続きを見る

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列)経由で「青囲」へ移動 

サブロー
それでは、今回はここまで。最後までお読みいただきありがとうございました!

2020年3月17日公開 |2020年9月22日


~INDEX一覧~

エクセル関数の勉強 1

サブローエクセル/Excel関数の一覧にしています。本ブログ内で記事にしているものは、講座の列にリンク付けを随時行います(^o^) ※使用頻度のランクに関しては、個人的な主観でランク付けをしています。 ...

2

サブロー危険物取扱者試験 乙4種対策講座の目次(INDEX)を作りました。 随時更新していくので、よろしくお願いします。 【目次/INDEX】 講座ID分類内容リンク 1共通#1『危険物取扱者試験』の ...

3

サブローQC(品質管理)検定に関する説明が増やして行く予定なのでリンクに飛ぶような目次(INDEX)を作りました。 随時更新していくので、よろしくお願いします。 モグゾー対象級を記載していますが、あく ...

4

サブローExcel VBAに関する説明を今後増やして行く予定なので、各リンクに飛ぶような目次(INDEX)を作りました。 随時更新していくので、よろしくお願いします。 目次(INDEX) 講座No内容 ...

-Excel, Microsoft, VBA
-, ,

Copyright© サブログ , 2020 All Rights Reserved Powered by AFFINGER5.