もくじ
VBAでエクセルシートの最終行と最終列を取得する方法を紹介します。
実務でよく使用するため、コピペで使用できるようにまとめました。
【実装コード】最終行を取得
以下のコードは、「Sheet1」シートA列の最後のデータが入力されている行番号を取得してlastRow
に格納しています。
必要に応じて、シート名と列(青字)を書き換えてください。
ws.Cells(ws.Rows.Count, "A")
のA
は、A列を表しています。
B列を対象にしたい場合は、ws.Cells(ws.Rows.Count, "B")
となります。
Sub sample()
' 対象シート
Dim ws As Worksheet
Set ws = Sheets("Sheet1")
' 最終行を取得
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
End 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 Worksheet
Set ws = Sheets("Sheet1")
' 最終行を取得
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' A列が全て空の場合、lastRowに0を格納
If lastRow = 1 And IsEmpty(ws.Cells(1, "A")) Then
lastRow = 0
End If
End Sub
【実装コード】最終列を取得
以下のコードは、「Sheet1」シート1行目の最後のデータが入力されている列番号を取得してlastColumn
に格納しています。
必要に応じて、シート名と行番号(青字)を書き換えてください。
ws.Cells(1, ws.Columns.Count)
の1
は、1行目を表しています。
2行目を対象にしたい場合は、ws.Cells(2, ws.Columns.Count)
となります。
Sub sample()
' 対象シート
Dim ws As Worksheet
Set ws = Sheets("Sheet1")
' 最終列を取得
Dim lastColumn As Long
lastColumn = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
End 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 Worksheet
Set ws = Sheets("Sheet1")
' 最終列を取得
Dim lastColumn As Long
lastColumn = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
' 1行目が全て空の場合、lastColumnに0を格納
If lastColumn = 1 And IsEmpty(ws.Cells(1, "A")) Then
lastColumn = 0
End If
End Sub
Excel VBAで初心者を卒業したいという方におすすめの1冊
もみじ
入門書レベルの内容を理解できる方におすすめの1冊で、実務で必要なスキルを学ぶことができます。
具体的には、コーディングの作法や効率的なコーディング方法、CSVやWeb上のデータとの連携方法、そしてマクロの高速化などの実務で役立つスキルを学ぶことができます。