【VBA】最終行列の取得方法

VBA

こんにちは!sysin-jamです。

エクセルで解析したりするときに良くVBAを使います。
その時に最初の行から最後の行まで繰り返し処理を行うことが多いです。

主な最終行・最終列の取得方法をご紹介します。

取得方法① 上(左)方向に最終行(列)を検索する

MRow = Cells(Rows.Count, 1).End(xlUp).Row
MCol = Cells(1, Columns.Count).End(xlToLeft).Column

① Rows.Countでそのシートの最終行を取得します。(Cells(1048576, 1)になる)
①を起点としてEnd(xlUp)(Ctrl+↑)で最初に空白ではない行を取得します。
※ 列も同様で、最終列を起点としてEnd(xlToLeft)(Ctrl+←)で空白ではない列を取得します

空白ではない行を2列目とかにしたい場合は、起点の行(列)を変えれば良いです。

MRow = Cells(Rows.Count, 2).End(xlUp).Row   '2列目の空白でない行を取得
MCol = Cells(2, Columns.Count).End(xlToLeft).Column  '2行目の空白でない列を取得

取得方法② シート内の最終セル位置の取得

MRow = Cells.SpecialCells(xlCellTypeLastCell).Row
MCol = Cells.SpecialCells(xlCellTypeLastCell).Column

Ctrl+Endを押して遷移するセルの位置を取得します。
罫線とかが入っているとそのセルも対象とのなりまs。

まとめ

シート内最終セル位置では書式がついていると、そのセルも対象になってしまいます。
そこを除外する方法もありますが、あまり使わなかったので載せていません。
使うようになってきたら更新しようと思います!(UsedRangeとかFindとか)

EXCELを使う現場だとVBA知っておくと便利ですよね。では!

コメント

タイトルとURLをコピーしました