VBAで、A列にデータが隙間なく入力されているときに「Range("A1").End(xlDown).Row」というコードで最終行の行番号を取得できることをご紹介しました。このコードでは最終行を取得できないケースもあります。Range("A1").End(xlDown)で最終行を表すRangeオブジェクトが取得できないケースA列にデータが隙間なく入力されていないときにはダメなのです。Range("A1").End(xlDown).Rowというコードを実行したときには、空白のA11セルの一つ上のセルの行番号「10」が取得されてしまいます。A10セルまではデータが入力されていて、A11セルが空白セルだったときにA1セルをアクティブにしておいて[Ctrl]+[↓]キーを押せば、A10セルがアクティブになります。このA10セルの10行目の10がRange("A1").End(xlDown).Rowで返されたわけです。[スポンサードリンク]空白セルがあるときに最終行番号を取得するサンプルコードこのような空白セルを作らないように表を作っておくのが本筋ですが、実務でExcelを利用する場合は、こんな空白セルの含まれた表が作られてしまうことも、残念ながら、あります。そんなときに最終行番号を取得するコードをご紹介しておきます。1)というコードで、A列の一番下のセルを取得できます。1)というコードで、同じくA列の一番下のセルを取得できます。2007から仕様が変更になっていて、2003以前か2007以降かで、ワークシートの行数は異なります。Rows.Countというのが最大行数を取得するオブジェクト式で、これをCellsプロパティの第1引数に指定しています。"A").End(xlUp).Rowです。1).End(xlUp)ではA列の一番したのセルから上方向に探すのでEndプロパティの引数がxlUpになっています。1).End(xlUp)というコードは、Excelでマクロを作るときの定番のコードの一つです。"A").End(xlUp)の注意点ただし、このコードで、いつでも、絶対に、間違いなく、必ず最終行が取得できると考えるのは、問題があります。下のセルから上方向にデータの存在しているセルを探すのは、A列に空白のセルが存在している可能性があるからでした。下のセルが空白セルとなっている可能性だってあるはずです。1).End(xlUp)というコードで最終行を取得できる可能性はかなり高いですが、この一番下のセルが空白になっている可能性は意識しておく必要があります。結局、空白セルを作らないような表を作る業務ルールを、徹底して運用するのが一番です。インストラクターのネタ帳データの入力されている最終列を取得するExcel(エクセル)VBAのコードをご紹介しています。インストラクターのネタ帳ワイルドカードとOr演算子を使って条件を指定して、条件に合致した行を削除するExcel(エクセル)マクロをご紹介しています。インストラクターのネタ帳セルが結合されているときに最終行番号を取得するExcel(エクセル)VBAのコードをご紹介しています。行の高さ・列の幅を1枚目のワークシートに揃えるExcel(エクセル)マクロをご紹介しています。Script)をご紹介しています。インストラクターのネタ帳オートフィルターしたデータの、見出し行以外をコピーするExcel(エクセル)マクロをご紹介しています。インストラクターのネタ帳Range.Findメソッドを使って、検索開始位置を最終行にする方法をご紹介しています。インストラクターのネタ帳DictionaryオブジェクトはCountプロパティで項目の数を取得することができます。インストラクターのネタ帳Rangeオブジェクトの、End(xlUp).Row・End(xlDown).Rowの戻り値の型について解説しています。Officeの使い方などを紹介し続け(2012年頃からはVBA関連記事が多め)、毎日5万人の方にご覧いただいています。