2020年1月10日スポンサーリンクこんばんは。nanana-blog管理人のナナナです。ブログを訪問し記事を読んでいただきありがとうございます。ExcelのVBAを使用していると最終行を取得したい場面があります。UsedRangeプロパティを使用すると、最終行を取得することができます。UsedRangeだけでは、空白セルを含むデータの最終行を取得することが出来ません。本日は空白セルを含んだデータでも最終行を取得することが出来るVBAの書き方を紹介します。空白セルを含むデータの最終行を調べる方法Endプロパティを使用するUsedRangeプロパティを使用する最後に空白セルを含むデータの最終行を調べる方法Endプロパティを使用するワークシートの最終行から上に向かって値の入力されているセルへ移動します。画像のような7行目に空白がある場合、上から下へ移動すると6行目が最終行と認識されてしまいますが、下から上へ移動すると8行目が最終行になります。Rows.CountRow.Countでワークシートの最終行を取得して変数MaxRowへ格納します。ちなみにExcel2003の最終行は「65,536行」で、現時点で最新バージョンのExcel2019の最終行は「1,048,576行」です。1)でA列の1,048,576行目を表しています。Endプロパティの「xlUp」を使って上方向へ移動して、移動先の行数を変数MaxRowNumberへ格納しています。他にも下方向への移動や左や右への移動を指定することができます。右方法への移動このVBAを起動するとメッセージボックスには「8」と表示されます。Sub解説UsedRangeは非表示のセルや、セル内に値はなくても罫線が引かれていたりするセルも対象になります。そのためUsedRangeで取得したRangeからFindプロパティを使って、最終行を探します。「Worksheets("Sheet1").UsedRange」でSheet1のデータがあるセル範囲を取得します。Findプロパティを使用してUserdRangeで取得した範囲から最終行を取得していきます。引数の1番目で「*」を使用して、値の入力されている全てのセルを対象にしています。値が入力されているセルなので、罫線などの書式のみのセルは対象外になります。引数の5番目で「xlByRows」を指定して検索方向を縦(列)に指定します。検索方向を横(行)にしたい場合は「xlByColumns」を指定します。引数6の番目で「xlprevious」を指定して検索値の最終セルを取得します。このVBAを実行すると最初に「8」その後に「6」とメッセージが表示されます。最後にいかがだったでしょうか。本日はExcelVBA最終行を取得する方法を紹介しました。For文を使用して繰り返し処理をする場合などデータの最終行を使用することはあります。今回掲載しているVBAはコピペをして使用できるので、ぜひ使用してください。nananablog43@gmail.comnanana-blogExcelExcelのプログラミングは初心者におすすめ。nanana-blog。