スレッドが開かれましたので、場をお借りして補足説明します。
https://www.moug.net/tech/exvba/0150043.html
という紹介した記事は使えなかったでしょうか。
Sub Sample()
Dim Count As Long
Range("A1").AutoFilter Field:=4, _
Criteria1:="マスター会員" '「マスター会員」を抽出
Count = WorksheetFunction.Subtotal(3, Range("A1").CurrentRegion.Columns(1))
MsgBox Count - 1 & " 件です。"
End Sub
いや、そんなフィルターじゃないから、といった理由で使えないと判断したのでしょうか。
残念ですね。
pointは、
Count = WorksheetFunction.Subtotal(3, Range("A1").CurrentRegion.Columns(1))
のようにSUBTOTALワークシート関数が使えるという点です。
【補足】
その記事には、
> VBAでワークシート関数を利用するには、WorksheetFunctionオブジェクトを使います。
> SUBTOTAL関数は、第1引数に 3 を指定すると、データの個数を返します。
とあります。
SUBTOTAL関数のヘルプによれば、
| 第1引数に 3 を指定すると、非表示のものも含んだ COUNTA
| 第1引数に 103 を指定すると、非表示のものを除いた COUNTA
が計算されます。
しかし、オートフィルタの場合は、
3でも103でも表示されたものだけが対象になります。(オートフィルタの特殊性)
(素直に103を使わないのは、3でも同じ結果が得られることを知らないのでは?
と批判されるのを懸念したものでしょうか。わかる気もしますww。)
なお、オートフィルタやフィルタオプションではなく、手動で行を非表示した場合には、
ヘルプの説明どおり、
第1引数に 103 を指定しなければ、表示されたものだけを対象にできません。