はじめに
ExcelでVBAを使って作業を自動化していると、特定の列で最後に入力されているセルの行番号を取得したい場面があります。
私の場合は、「B列の中で最後に値が入力されている行を取得したい」と思い、その方法を調べて実装してみました。
結論から言うと、.End(xlUp)
を使うことで、B列の最終入力行を簡単に取得することができました。
実現したいこと
- B列に入力されている中で、一番下の行番号を取得する
- その行番号を使って、C列に日付を入れるなどの処理に活用する
使用したVBAコード
以下は、実際に使用したコード例です。
Dim xlendrow As Long
Dim endrow As Long
xlendrow = Cells(Rows.Count, 1).Row
endrow = Cells(xlendrow, 2).End(xlUp).Row
コードの解説
1〜2行目:変数の宣言
Dim xlendrow As Long
Dim endrow As Long
xlendrow
にはシートの最終行番号を、endrow
にはB列の最終入力行を格納するための変数を用意しています。
3行目:Excelの最終行番号を取得
xlendrow = Cells(Rows.Count, 1).Row
ここでは、Excelの仕様上の最終行番号(通常は1048576)を取得しています。
引数の1
は列A(=1列目)を指定していますが、ここでは単に最終行の基準として使っているだけです。
4行目:B列の最終入力行を取得
endrow = Cells(xlendrow, 2).End(xlUp).Row
この処理により、B列の下から上に向かって最初に見つかった値のセルの行番号が取得されます。
これが、B列で最後に値が入力されている行になります。
応用:取得した行を使って処理を追加
このendrow
を使えば、たとえば以下のようにしてC列に日付を自動入力することもできます。
Cells(endrow, 3).Value = Date
このように、列の末尾を正確に把握することは、処理の自動化や繰り返し処理において非常に役立ちます。
まとめ
.End(xlUp)
を使うことで、特定の列の最終入力行を簡単に取得することができます。
このテクニックは、データの追加や入力チェックなど、VBAでのあらゆる場面で活用できます。
今回はB列を例にしましたが、他の列でも同じように使えますので、汎用性の高い方法として覚えておくと便利です。
少しでも参考になれば幸いです。