Vba最終行の取得で失敗する原因は?ズレを防ぐ決定打と状況別テンプレ
Vba最終行の取得で失敗する原因は?ズレを防ぐ決定打と状況別テンプレとはどんな影響があるのか? 専門的な分析を丁寧に紐解いて紹介します。
実務の現場では、単一列の判定だけでは完結しない複雑なデータ構造が日常的に登場します。代表的な応用パターンを整理しました。
複数列の中で最大の最終行を割り出す
A列・B列・C列それぞれで行数が異なる場合、各列の最大値を比較して取得します。
Dim maxRow As Long Dim col As Variant For Each col In Array("A", "B", "C") maxRow = Application.Max(maxRow, ws.Cells(ws.Rows.Count, col).End(xlUp).Row) Next col
Excelテーブル(ListObject)のデータ末尾を取得する
構造化されたテーブルを扱う場合、シート行ではなくテーブルオブジェクトを直接操作するのが安全です。
Dim tbl As ListObject Set tbl = ws.ListObjects("売上データ") ' テーブル全体の最終シート行番号 Dim tblLastRow As Long tblLastRow = tbl.Range.Row + tbl.Range.Rows.Count - 1
最終「列」番号を取得する構文
横方向に伸びるデータの場合、行と同様に右端から左方向へ探索を行います。Columns.CountとxlToLeftを組み合わせることで、最右列の位置を瞬時に特定できます。
Dim lastCol As Long lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column