オートフィルターで抽出した行数を取得するコードでエラーが出てしまうが?

Question 008p 拙著「組み方講座・プロの定番」 Previous Next
116ページ 3章2-3 定番(3)C1 ◆ 環境・・ Excel 2000 & Windows XP
詳細は こちら
「オートフィルターで抽出したデータの行数等を取得する」を参考にしてマクロを組んだのですが、現状のExcel2000の環境では、[実行時エラー '438": オブジェクトは、このプロパティまたはメソッドをサポート していません。] がでます。 (★★印の箇所です)
Dim DBシート, 基点セル, 抽出列, 抽出キー
Dim 別シート, コピー先キー
Dim コピー先シート As Worksheet
Dim 抽出範囲 As Range
Dim 領域 As Range
Dim 行数
オートフィルターで抽出
    DBシート = "sheet1"
    基点セル = "A1"
    抽出列 = 2
    抽出キー = txtPeji.Text
    With Worksheets(DBシート)
        .Activate
        If .AutoFilterMode Then                 'オートフィルターモードがオンなら
            Selection.AutoFilter                'リセットする
            End If
    End With
    Range(基点セル).AutoFilter field:=抽出列, Criteria1:=抽出キー
データがない場合
    Set 領域 = Range(基点セル).CurrentRegion
    行数 = 領域.Columns(1).SpecialCells(xlCellTypeVisible).cell.Count - 1 '★★
    If 行数 = 0 Then
        MsgBox "一致するデータはありません"
    Else
抽出結果をコピーする
        Worksheets("抽出").Cells.Clear          '抽出シートのクリア
        別シート = "抽出"
        コピー先セル = "A1"
        Set コピー先シート = Worksheets(別シート)
        Set 抽出範囲 = Worksheets(DBシート).Range(基点セル).CurrentRegion
        コピー先シート.Cells.Clear
        With 抽出範囲
            .Resize(.Rows.Count - 1).Offset(1).Copy _
                Destination:=コピー先シート.Range(コピー先セル)
        End With
    End If
    Worksheets("sheet1").AutoFilterMode = False 'オートフィルターオフ
私ども全くの初心者で、お手間を取らせますが、よろしければ、記述違いを指摘していただけないでしょうか。
よろしくお願いします。
Answer   Copyright (C) 2005.12.13 永井善王
拙著「ExcelVBAマクロ組み方講座 プロの定番・裏技・合わせ技[編]」をご購読、ありがとうございます。
「全くの初心者」とご謙遜ですが、拝見したところ、定番③[C1]、[C3]、[E2]、合わせ技①のサンプルや、 ユーザーフォームから抽出キーの値を取得される等、上手に組み合わせておられます。
エラー原因は
s が漏れているからだと思いますから、下記のとおり cell の後に s を入れて cells としてください。

  行数 = 領域.Columns(1).SpecialCells(xlCellTypeVisible).Cells.Count - 1


 

Excel VBA Macro