利用されている最終行を取得

利用されている最終行を取得する。

VBAで利用されている最終行を取得するには下記の2つの方法があります。
 ・Endプロパティを利用
 ・SpecialCellsメソッド、UsedRangeプロパティを利用

Endプロパティでは指定したセルを起点として、引数に xlDown もしくは xlUp を指定して利用されている最終行を取得できます。
xlDown を指定した場合は下方向に値が入力されている最終行を取得できます、ただし途中で空白行があるとそこまでしか取得できません。
なので、実際に値の入力されている最終行を取得したい場合は Excelで扱える最終行(Excel2016なら1048576行目)から xlUp を指定して上方向に入力されている行を取得することで最終行を取得できます

SpecialCellsメソッド、UsedRangeプロパティを利用した方法ではシート全体の中で利用されている最終行を取得できます。
この方法で最終行を取得する場合、値が入力されていなくてもセル書式(色の塗りつぶし、罫線など)が設定されているセルも最終行として取得されます。

 ●指定したセルを起点に利用されている最終行を取得

'******************************************************************
' 指定したセルを起点に利用されている最終行を取得
'******************************************************************
Sub getEndRow()

    '指定のセルを起点にそこから値が連続して入力されている最終行を取得する
    Debug.Print "End(xlDown)"
    Debug.Print Sheets("Sheet1").Range("A1").End(xlDown).Row & "行目"
    
    
    'Excelで扱えるの最下行(1048576行目)を起点に上方向で初めて値が入力されている行を取得する
    Debug.Print
    Debug.Print "End(xlUp)"
    Debug.Print Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row & "行目"

End Sub

 ■実行結果

シートの情報


 指定したシート内で利用されている最終行を取得

'******************************************************************
' シート内で利用されている最終行を取得
'******************************************************************
Sub getLastRow()

    'シート全体で利用されている最終行を取得とする(SpecialCells)
    Debug.Print "SpecialCellsメソッド"
    Debug.Print Sheets("Sheet1").Cells.SpecialCells(xlCellTypeLastCell).Row & "行目"
    
    
    'シート全体で利用されている最終行を取得とする(UsedRange)
    With Sheets("Sheet1").UsedRange
        Debug.Print "UsedRangeプロパティ"
        Debug.Print .Item(.Count).Row & "行目"
    End With

End Sub

 ■実行結果

シートの情報