アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセル2007のVBAについて教えてください。

A1→目次
A2→あ
A3→い
A4→う
A5→え
A6→お

オートフィルタで「え」を抽出します。

この状態で
Sub test()
MsgBox Range("a65536").End(xlUp).Row
End Sub
を実行すると、5が返ってきますが
実際の最終行は6です。

オートフィルタをしつつ、最終行を取得するには
どうすればいいのでしょうか?

ご回答よろしくお願いします。

「オートフィルタをしても本当の最終行を取得」の質問画像

A 回答 (5件)

>オートフィルタをしつつ、最終行を取得するには



with activesheet.autofilter.range
msgbox .cells(.cells.count).row
end with

などで。
    • good
    • 0
この回答へのお礼

この方法は初めて知りました!
ありがとうございました。

お礼日時:2012/04/14 23:07

No.2です。

訂正です。

(誤) For i = 30 to 1 Step -1
(正) For i = 65536 to 1 Step -1

失礼いたしました。
    • good
    • 0
この回答へのお礼

どうして30なのかなーと思いましたがw
ありがとうございました。

お礼日時:2012/04/14 23:06

たとえばこんなのはどうでしょう


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 で判定できると思います(ためしてません。見つからなくてエラーになるかも)
    • good
    • 0
この回答へのお礼

エラーにならずにうまくできました
ありがとうございました。

お礼日時:2012/04/14 23:05

こちらでいかがですか?



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()を外してください。

もっとスマートな手法があると思うのですけど、ご参考になれば幸いです。
    • good
    • 0
この回答へのお礼

これでもできるのですね。
有難うございました。

お礼日時:2012/04/14 18:27

A列の行で空の行が無い場合には次のようにすればよいでしょう。



MsgBox WorksheetFunction.CountA(Range("A:A"))
    • good
    • 0
この回答へのお礼

なるほど!関数を使うのですね!
ありがとうございました。

お礼日時:2012/04/14 18:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!