今回は、セルの最終行を取得する方法について解説します。
最終行の取得には大きく分けて3パターン存在し、それぞれの取得方法を詳しく解説します。
- セルの最終行を取得する方法が分かります。
- 3パターンの取得方法と、それぞれのメリット・デメリットが理解できます。
- コピペで使える実践的なサンプルコードを掲載しています。
前提
本記事で紹介する最終行とは、「最終行の行番号」を指します。
Cellsプロパティなどで行インデックスを指定して最終行のセルを操作するため、最終行番号を取得しましょう。
最終行の取得方法
# | 取得方法 | 説明 |
---|---|---|
1 | 下方検索 | 指定したセルから下へ検索し、空行までの行数を取得 |
2 | 上方検索 | 指定した行列から上へ検索し、空行までの行数を取得 |
3 | 使用済みセル検索 | 使用しているセルの最終行を取得 |
取得方法のイメージと注意点
先ほど紹介した通り最終行の取得には、いくつか方法があります。
それぞれの取得方法のイメージや注意点を解説します。
取得方法により、メリットやデメリットがあります。
すべての取得方法を理解したうえで、ご使用ください。
下方検索
指定したセルから 下方向に「空白」を検索し「空白」行の手前の行数を取得します。
以下の例であれば、部署コード列のヘッダ部から下に検索を行い、8行目の「8」が取得できます。
下方検索の注意点
検索の途中に意図しない空白があると、途中で検索が終了してしまいます。
表の最終行を取得する場合は、必ず空白が入らない列を指定するようにしましょう。
上方検索
指定した列の最下部から 上方向に「値あり」セルを検索し、「値あり」セルの行数を取得します。
以下の例のように1列目を指定した場合には「8」が取得できます。
上方検索の注意点
検索の途中に意図しない値があると、途中で検索が終了してしまいます。
表の最終行を取得する場合は、必ず意図しない値が入らない列を指定するようにしましょう。
使用済みセル検索
シート内で、「値が入力されているセルの最終行」を取得します。
以下の例であれば表の最下部である 8行目の行番号が取得できます。
※取得する際、セルの指定は不要です。
使用済みセル検索の注意点
以下のように、ゴミデータが表の外に入力されている場合、意図しない行番号が取得されることがあります。
基本情報
Endプロパティ
セルの最終行を取得するには、RangeオブジェクトのEndプロパティを使用します。
構文
Rangeオブジェクト.End(設定値)
設定値
XlDirection定数を指定し、検索方向を指定します。
XlDirection定数については後述します。
XlDirection定数
# | 定数 | 説明 |
---|---|---|
1 | xlDown | 下に向けてセルを検索する |
2 | xlUp | 上に向けてセルを検索する |
3 | xlToLeft | 左に向けてセルを検索する |
4 | xlToRight | 右に向けてセルを検索する |
サンプルコード
最終行番号の取得(下方検索)
Public Sub getEndRowIndexForDown()
Dim endRowIndex As Long ' 最終行番号
' A1セルを起点として最終行番号を取得
endRowIndex = Range("A1").End(xlDown).Row
MsgBox "最終行番号:" & endRowIndex, vbInformation
End Sub
最終行の取得(上方検索)
Public Sub getEndRowIndexForUp()
Dim endRowIndex As Long ' 最終行番号
' 3列目から上方検索をして最終行番号を取得
endRowIndex = Cells(Rows.Count, 3).End(xlUp).Row
MsgBox "最終行番号:" & endRowIndex, vbInformation
End Sub
最終行の取得(使用済みセル検索)
Public Sub getEndRowIndexForUsedRange()
Dim endRowIndex As Long ' 最終行番号
' 使用済みセルの最終行番号を取得
endRowIndex = ActiveSheet.UsedRange.Rows.Count
MsgBox "最終行番号:" & endRowIndex, vbInformation
End Sub
最後に
今回は、最終行を取得する方法についてご紹介しました。
取得方法により、不具合を埋め込む可能性があるため適切な取得方法を用いてコーディングを実施しましょう。
本記事が、皆さんのお力になれば幸いです!
コメント