- ベストアンサー
オートフィルタをしても本当の最終行を取得したい
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>オートフィルタをしつつ、最終行を取得するには with activesheet.autofilter.range msgbox .cells(.cells.count).row end with などで。
その他の回答 (4)
- tondekesky
- ベストアンサー率68% (17/25)
No.2です。訂正です。 (誤) For i = 30 to 1 Step -1 (正) For i = 65536 to 1 Step -1 失礼いたしました。
お礼
どうして30なのかなーと思いましたがw ありがとうございました。
- f_onion
- ベストアンサー率47% (10/21)
たとえばこんなのはどうでしょう Sub test2() Dim r As Range Set r = Range("A:A").SpecialCells(xlCellTypeConstants) 'MsgBox r.Cells(r.Count, 1).Value ' お と出る。 MsgBox r.Cells(r.Count, 1).Row Set r = Nothing End Sub UsedRangeを利用する方法でもいけるかもしれません。 ない場合は IsEmpty(r) か r Is Nothing で判定できると思います(ためしてません。見つからなくてエラーになるかも)
お礼
エラーにならずにうまくできました ありがとうございました。
- tondekesky
- ベストアンサー率68% (17/25)
こちらでいかがですか? Sub test() Dim i, myColumn As Integer myColumn = 1 For i = 30 To 1 Step -1 If Trim(Cells(i, myColumn)) <> "" Then MsgBox i: Exit Sub Next End Sub iやmyColumnは別のアルファベットに変えていただいて大丈夫です。 Trim()で、セルに半角または全角スペースだけが入力されている場合は、それを空白セルとみなすようにしています。 スペースだけが入力されたセルも最終行とみなしたい場合は、Trim()を外してください。 もっとスマートな手法があると思うのですけど、ご参考になれば幸いです。
お礼
これでもできるのですね。 有難うございました。
- KURUMITO
- ベストアンサー率42% (1835/4283)
A列の行で空の行が無い場合には次のようにすればよいでしょう。 MsgBox WorksheetFunction.CountA(Range("A:A"))
お礼
なるほど!関数を使うのですね! ありがとうございました。
お礼
この方法は初めて知りました! ありがとうございました。