ワークシートに記載されている表などの最終行・最終列を取得する方法を紹介します。データ処理などで表の末端のセル情報が必要なときに役に立ちます。
表に抜けがない場合の検索方法
検索対象の行・列に抜けがない場合に使える検索方法です。
最終行・最終列の検索には、RangeオブジェクトのEndプロパティを使用します。
Rangeオブジェクト.End(方向)
引数(方向)には、検索する方向を指定します。
名前 | 値 | 説明 |
xlDown | -4121 | 下へ検索 |
xlToLeft | -4159 | 左へ検索 |
xlToRight | -4161 | 右へ検索 |
xlUp | -4162 | 上へ検索 |
そして、検索した最終行の行番号を取得するには、
Rangeオブジェクト.End(方向).Row
と書きます。
また、最終列の列番号を取得するには
Rangeオブジェクト.End(方向).Column
と書きます。
サンプルコード
表の最終行の行番号を求めるコードです。前提として、表の各列のラベルの記載されている行番号は既知であるとします。
Sub 最終行の行番号を取得する()
Dim endgyo As Long
endgyo = Cells(5, 2).End(xlDown).Row
End Sub
また、表の最終列(右端)の列番号を取得する場合はEndプロパティの検索方向をxlToRightとして、最後の.Rowを.Columnに変えれば取得可能です。
Sub 最終列の列番号を取得する()
Dim endretsu As Long
endretsu = Cells(5, 2).End(xlToRight).Column
End Sub
表に抜けがある場合の検索方法
今度は表に抜けがある場合です。
実際の表でラベル部分に抜けがあることはまずないと思いますが、抜けがあった場合を想定します。
先ほどのケースでは、表に抜けがないので表の任意の位置を起点として末端を検索していましたが今回のケースでは、表の外側から表に向かって検索します。
また検索の起点となる点は、Worksheetの最終行・列を指定します。最終行・列の番号はそれぞれ次の方法で取得します。
Worksheetの最終行を取得:Rows.Count
Worksheetの最終列を取得:Columns.Count
これを用いて表の外側から表に向かって検索をします。
表の最終行と最終列の番号は次の方法で取得可能です。
【表の最終行(下端)を検索する】
Cells(Rows.Count, 任意の列番号).End(xlUp).Row
【表の最終列(右端)を検索する】
Cells(任意の行番号, Columns.Count).End(xlToLeft).Row
なお参考までに表の先頭行(上端)・先頭列(左端)については、
【表の先頭行(上端)を検索する】
Cells(1, 任意の列番号).End(xlDown).Row
【表の最終列(左端)を検索する】
Cells(任意の行番号, 1).End(xlToRight).Row
となります。
サンプルコード
上記の表のケースにおける最終行・列を求めるコードです。今回もラベルとなる行・列については既知とします。
Sub 表の最終行と最終列を求める()
Dim endgyo As Long
Dim endretsu As Long
endcell = Cells(Rows.Count, 2).End(xlUp).Row
endretsu = Cells(5, Columns.Count).End(xlToLeft).Column
End Sub
このコードでは最終行を求めるために、表の日付(2列目)を検索対象として使用しています。また、最終列を求めるには5行目を検索対象として使用しています。
コメント