BizFAQ-ビズファックBizFAQ-ビズファック仕事・ビジネスにおけるちょっと困ったこと、わからないことをズバリ解決お悩み解決サイトです。GenVBAのCellsはデフォルトで縦横全てのセルを取得しましたが、Rowsは横一行を取得します。Rows単体では使いにくそうですが、データの最終行処理で頻出です。これはもうVBAのパターンなので、どこかに書いて保存しておいた方がいいかも。SubVBAのRowsでデータの最終行を取得するVBAで最終行を得る時、基準のセルから、「下に」最終行を探すか「上に」最終行を探すかで結果が異なる場合があります。原因は空行にあります。空行がある場合は「下に」探したのでは不十分な最終行になってしまいます。そこで「上に」探すことが必要です、Rowsオブジェクトを使用します。1.RowsオブジェクトとはRows(Index)で、行一列を取得します。今回の処理では、ワークシート全体のRowオブジェクトの数を数えるために使用します。上位オブジェクトにはWorksheetかRangeオブジェクトを指定できます。省略した場合はActiveSheetが補完されます。2.最終行を得る(下に検索)「Ctrl+↓」でデータの最終行に移動できるのは知っていますでしょうか。その操作のマクロ記録が以下になります。サンプルデータはこちらです。「Ctrl+↓」を押した画像はこちらです。コード記録されたVBAがこちらです。Sub3.データの最終行(上に検索)VBAのコードを見てすぐ分かる人はいませんが、実はEndキーワードが検索をするプロパティです。引数が検索をする方向になります。xlToLeftが指定できます。Endの上位オブジェクトが検索の基準になるセルです。A1から検索するのではなくA列のシートの最終行から「上に」検索することで最終行を得ます。最終行はCells.Rows.Countで取得します。Sub修正するとこうなります。実行した画像は以下になります。EndプロパティはVBAのRangeオブジェクトを返しますので、Range.RowでRangeオブジェクトの行数を得ることが出来ます。Sub実行した画像は以下になります。今回はRowsオブジェクトの解説をしました。この最終行を得る処理は結構使うので、自分でFunction化して保存しておくと便利です。頻出の処理をまとめてライブラリ化するのも大切です。