エクセルVBAでよく使うコードの備忘録。「入力されている行・列の一番端を取得する」コード。ワークシートCellsのEndプロパティを使います。
共通コード
説明するコードを簡素化するために使用した変数などの共通部分です。今回のテーマの本質的な部分には関係はありません。nは最終行・列の番号を格納するための変数です。コードを使用する際はカッコに囲まれた部分([***])を自分のプログラムに合わせて変更してください。
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("[ワークシート名]")
Dim n As Long
開始行(縦方向)
1行目から下側に検索をかけて(xlDown)最初に入力があるセルの行番号をRowプロパティで取得します。
n = ws.Cells(1, [列番号]).End(xlDown).Row
開始列(横方向)
1列目から右側に検索をかけて(xlToRight)最初に入力があるセルの行番号をColumnプロパティで取得します。
n = ws.Cells([行番号], 1).End(xlToRight).Column
最終行(縦方向)
Rows.CountでExcelの最大行数を取得し、そこから上側に検索をかけて(xlUp)最初に入力があるセルの行番号をRowプロパティで取得します。xlDownで検索すると途中に空欄があった場合にそこで止まってしまいます。
n = ws.Cells(Rows.Count, [列番号]).End(xlUp).Row
最終列(横方向)
Columns.CountでExcelの最大列数を取得し、そこから左側に検索をかけて(xlToLeft)最初に入力があるセルの列番号をColumnプロパティで取得します。xlToRightで検索すると途中に空欄があった場合にそこで止まってしまいます。
n = ws.Cells([行番号], Columns.Count).End(xlToLeft).Column