もくじ
VBAでエクセルシートの最終行と最終列を取得する方法を紹介します。
実務でよく使用するため、コピペで使用できるようにまとめました。
【実装コード】最終行を取得
以下のコードは、「Sheet1」シートA列の最後のデータが入力されている行番号を取得してlastRowに格納しています。
必要に応じて、シート名と列(青字)を書き換えてください。
ws.Cells(ws.Rows.Count, "A")のAは、A列を表しています。
B列を対象にしたい場合は、ws.Cells(ws.Rows.Count, "B")となります。
Sub sample()' 対象シートDim ws As WorksheetSet ws = Sheets("Sheet1")' 最終行を取得Dim lastRow As LonglastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).RowEnd Sub
ws.Cells(ws.Rows.Count, "A").End(xlUp).Row 使用時の注意事項
A列に何も入力されていない場合、ws.Cells(ws.Rows.Count, "A").End(xlUp).Rowは0ではなく1を返します。
これは、最終行が1行目であると解釈されるためです。
VBAの.End(xlUp)メソッドは、指定されたセル範囲の最後の非空セルを検索し、それが見つからなかった場合は列の先頭(ここでは1行目)を返します。
したがって、A列に何も入力されていない場合、最終行として1行目が返されます。
以下のコードは、A列に何も入力されていない場合lastRowに0を格納するようにしたものです。
Sub sample()' 対象シートDim ws As WorksheetSet ws = Sheets("Sheet1")' 最終行を取得Dim lastRow As LonglastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row' A列が全て空の場合、lastRowに0を格納If lastRow = 1 And IsEmpty(ws.Cells(1, "A")) ThenlastRow = 0End IfEnd Sub
【実装コード】最終列を取得
以下のコードは、「Sheet1」シート1行目の最後のデータが入力されている列番号を取得してlastColumnに格納しています。
必要に応じて、シート名と行番号(青字)を書き換えてください。
ws.Cells(1, ws.Columns.Count)の1は、1行目を表しています。
2行目を対象にしたい場合は、ws.Cells(2, ws.Columns.Count)となります。
Sub sample()' 対象シートDim ws As WorksheetSet ws = Sheets("Sheet1")' 最終列を取得Dim lastColumn As LonglastColumn = ws.Cells(1, ws.Columns.Count).End(xlToLeft).ColumnEnd Sub
ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column 使用時の注意事項
1行目に何も入力されていない場合、ws.Cells(1, ws.Columns.Count).End(xlToLeft).Columnは0ではなく1を返します。
これは、最終列が1列目であると解釈されるためです。
VBAの.End(xlToLeft)メソッドは、指定されたセル範囲の最後の非空セルを検索し、それが見つからなかった場合は行の先頭(ここでは1列目)を返します。
したがって、1行目に何も入力されていない場合、最終列として1列目が返されます。
以下のコードは、1行目に何も入力されていない場合lastColumnに0を格納するようにしたものです。
Sub sample()' 対象シートDim ws As WorksheetSet ws = Sheets("Sheet1")' 最終列を取得Dim lastColumn As LonglastColumn = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column' 1行目が全て空の場合、lastColumnに0を格納If lastColumn = 1 And IsEmpty(ws.Cells(1, "A")) ThenlastColumn = 0End IfEnd Sub
Excel VBAで初心者を卒業したいという方におすすめの1冊

もみじ
入門書レベルの内容を理解できる方におすすめの1冊で、実務で必要なスキルを学ぶことができます。
具体的には、コーディングの作法や効率的なコーディング方法、CSVやWeb上のデータとの連携方法、そしてマクロの高速化などの実務で役立つスキルを学ぶことができます。