| 
    
     |  | ▼Machiko さん: おはようございます。
 >最終行の取得はよくテーマになり、回答がいっぱいあるようですが。
 >自分なりに、色々なケースを書いたりしていますが・・・
 >こんなのはだめでしょうか?
 >With Sheets("Sheet1").Cells
 >   MsgBox .SpecialCells(11).Rows.Row
 >End With
 
 駄目ではないですよ!!
 ただ、最後のセルの行位置を求めるだけなら、
 
 刀火さんが記述された
 
 .SpecialCells(11).Row
 
 ↑で取得できますよね!!
 
 今回の刀火さんの質問は、この.SpecialCells(11)
 (.SpecialCells(xlLastCell))のバグのような現象についての投稿だったのです。
 
 
 新規ブックの標準モジュールに
 
 '=============================================================
 Sub test()
 With ActiveSheet
 .Range("a1:k30").Value = 1
 MsgBox ".cells.SpecialCells(11).Rows.Row = " & _
 .Cells.SpecialCells(11).Rows.Row & _
 " <--- Machikoさんのコード" & vbCrLf & vbCrLf & _
 ".cells.SpecialCells(xlLastCell).Row = " & _
 .Cells.SpecialCells(xlLastCell).Row & _
 " <---刀火さんのコード" & vbCrLf & vbCrLf & _
 ".UsedRange.SpecialCells(xlLastCell).Row = " & _
 .UsedRange.SpecialCells(xlLastCell).Row & _
 " <--- ichinose" & vbCrLf & vbCrLf & _
 "と全て同じ値を返しますが・・・、"
 
 .Range("a23:j30,k1:k30").ClearContents
 MsgBox "a23:j30とk1:k30のセル範囲の値をクリアした状態で同じことを行うと・・"
 MsgBox ".cells.SpecialCells(11).Rows.Row = " & _
 .Cells.SpecialCells(11).Rows.Row & _
 " <--- Machikoさんのコード" & vbCrLf & vbCrLf & _
 ".cells.SpecialCells(xlLastCell).Row = " & _
 .Cells.SpecialCells(xlLastCell).Row & _
 " <---刀火さんのコード" & vbCrLf & vbCrLf & _
 ".UsedRange.SpecialCells(xlLastCell).Row = " & _
 .UsedRange.SpecialCells(xlLastCell).Row & _
 " <--- ichinose" & vbCrLf & vbCrLf & _
 "という結果の違いを問題にしています"
 End With
 End Sub
 
 上記のコードを実行した結果を検討してしてみてください。
 
 |  |