プログラミング

【PR】を含みます。

【VBA】最終行・最終列を取得する方法

【VBA】 最終行・最終列を取得する方法

VBAでエクセルシートの最終行と最終列を取得する方法を紹介します。

実務でよく使用するため、コピペで使用できるようにまとめました。

【実装コード】最終行を取得

以下のコードは、「Sheet1」シートA列の最後のデータが入力されている行番号を取得してlastRowに格納しています。

必要に応じて、シート名と列(青字)を書き換えてください。

ws.Cells(ws.Rows.Count, "A")Aは、A列を表しています。

B列を対象にしたい場合は、ws.Cells(ws.Rows.Count, "B")となります。

VBA
Copy
  1. Sub sample()
  2.     ' 対象シート
  3.     Dim ws As Worksheet
  4.     Set ws = Sheets("Sheet1")
  5.     
  6.     ' 最終行を取得
  7.     Dim lastRow As Long
  8.     lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
  9. End Sub

ws.Cells(ws.Rows.Count, "A").End(xlUp).Row 使用時の注意事項

A列に何も入力されていない場合、ws.Cells(ws.Rows.Count, "A").End(xlUp).Row0ではなく1を返します。

これは、最終行が1行目であると解釈されるためです。

VBAの.End(xlUp)メソッドは、指定されたセル範囲の最後の非空セルを検索し、それが見つからなかった場合は列の先頭(ここでは1行目)を返します。

したがって、A列に何も入力されていない場合、最終行として1行目が返されます。

以下のコードは、A列に何も入力されていない場合lastRow0を格納するようにしたものです。

VBA
Copy
  1. Sub sample()
  2.     ' 対象シート
  3.     Dim ws As Worksheet
  4.     Set ws = Sheets("Sheet1")
  5.     
  6.     ' 最終行を取得
  7.     Dim lastRow As Long
  8.     lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
  9.     
  10.     ' A列が全て空の場合、lastRowに0を格納
  11.     If lastRow = 1 And IsEmpty(ws.Cells(1, "A")) Then
  12.         lastRow = 0
  13.     End If
  14. End Sub

【実装コード】最終列を取得

以下のコードは、「Sheet1」シート1行目の最後のデータが入力されている列番号を取得してlastColumnに格納しています。

必要に応じて、シート名と行番号(青字)を書き換えてください。

ws.Cells(1, ws.Columns.Count)1は、1行目を表しています。

2行目を対象にしたい場合は、ws.Cells(2, ws.Columns.Count)となります。

VBA
Copy
  1. Sub sample()
  2.     ' 対象シート
  3.     Dim ws As Worksheet
  4.     Set ws = Sheets("Sheet1")
  5.     
  6.     ' 最終列を取得
  7.     Dim lastColumn As Long
  8.     lastColumn = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
  9. End Sub

ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column 使用時の注意事項

1行目に何も入力されていない場合、ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column0ではなく1を返します。

これは、最終列が1列目であると解釈されるためです。

VBAの.End(xlToLeft)メソッドは、指定されたセル範囲の最後の非空セルを検索し、それが見つからなかった場合は行の先頭(ここでは1列目)を返します。

したがって、1行目に何も入力されていない場合、最終列として1列目が返されます。

以下のコードは、1行目に何も入力されていない場合lastColumn0を格納するようにしたものです。

VBA
Copy
  1. Sub sample()
  2.     ' 対象シート
  3.     Dim ws As Worksheet
  4.     Set ws = Sheets("Sheet1")
  5.     
  6.     ' 最終列を取得
  7.     Dim lastColumn As Long
  8.     lastColumn = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
  9.     
  10.     ' 1行目が全て空の場合、lastColumnに0を格納
  11.     If lastColumn = 1 And IsEmpty(ws.Cells(1, "A")) Then
  12.         lastColumn = 0
  13.     End If
  14. End Sub

Excel VBAで初心者を卒業したいという方におすすめの1冊

アイコン画像

もみじ

入門書レベルの内容を理解できる方におすすめの1冊で、実務で必要なスキルを学ぶことができます。

具体的には、コーディングの作法や効率的なコーディング方法、CSVやWeb上のデータとの連携方法、そしてマクロの高速化などの実務で役立つスキルを学ぶことができます。

-プログラミング
-,