【ExcelVBA - Tips】最大行の取得
今週のお題「修学旅行の思い出」
ExcelVBAに関するTips
コチラの記事は、ブログ管理人の開発メモです。
自分で調べ実際に使ったものだけを厳選して資産にするため、Tips + 一言コメントで記事を書いています。
たまーに詳しく説明を書く場合もあるかもしれません。
VBAの書き方で困った際に見つけやすいように記事にしています。
最大行の取得の頻度について
たとえば、以下のような一覧リストにデータを登録したい場合「最終行 + 1」の行に値を書き込む必要があります。
上記以外にも、マスタに登録されている以下のようなマスタのデータ一覧を取得する場合、
2行目からデータが登録されている行までFor文などでループして取得または処理を行うケースがよくあります。
取得方法について
いくつか方法があるのですが、私がやっている方法は以下です。
'概要: 指定列の最終行を取得 Function getMaxRow(longColNum As Long) As Long getMaxRow = ActiveSheet.Cells(Rows.Count, longColNum).End(xlUp).Row End Function
簡易解説
・ActiveSheet
こちらは、現在開いているシートを指します。
必要に応じてWorksheets("シート名")に変更することで、シートを指定することができます。
その場合は、引数に追加したほうがいいかもしれません。
・Rows.Count
Rangeオブジェクトのプロパティなのですが、要は、
「Excelの一番下の行」を指します。
Excel2007以降だと「1048576」で、それ以前だと「65536」が入ります。
・longColNum
これは、列を指定できるよう引数を設定しています。
1がA列、2がB列といった具合で設定できます。
・End(xlUp)
CELLを最上まで移動するといった意味です。
Rows.Countで一番下のセルに移動してから、「Ctrl+↑」を入力してヒットするところま移動するといったイメージ。
・Row
行を取得する処理です。
上記をすべて言葉で表現すると
指定した列の最終行から最上まで移動し、選択されたセルの行数を取得
となります。
最後に
きれいなコード、汎用性のあるコードは資産として取っておくべきです。
あれ?またこのコード書いているな?なんか似てるコード書いているような・・・
と思った場合はぜひ、メソッド化して汎用性のあるコードを残しておくことをお勧めします。
また、色々アップする予定ですのでお楽しみに。