Не удалось получить свойство SpecialCells класса Range

Я пытаюсь получить количество отфильтрованных строк в листе Excel. Но я пытаюсь ниже упомянутой ошибки:

Не удалось получить свойство SpecialCells класса Range.

strPath="C:\Users\PSin\Desk\CodeInven.xlsx"

Dim ObjectName


ObjectName=Trim(InputBox("Object Name:"))
Set objExcel= CreateObject("Excel.Application")
objExcel.Visible= True

objExcel.Workbooks.Open(strPath)

With objExcel.Activeworkbook.Sheets("All")

    .Range("A1").AutoFilter 19,"="&ObjectName

Rowz = .AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Cells.Count - 1 'Not able to figure out the correct way

msgbox Rows


End With

1 ответ

Если вы просто ищете количество строк, вы можете обойтись без сокращения исследуемого диапазона и просто получить счетчик видимых строк.

Dim Rowz
With objExcel.ActiveWorkbook.Sheets("All")
    With .Cells(1,1).CurrentRegion
        .AutoFilter 19, "=" & ObjectName
        Rowz = .Cells.SpecialCells(12).Rows.Count - 1 '<~~ VBScript might not know that xlCellTypeVisible = 12
        MsgBox Rowz
    End With
End With

Я уменьшил xlCellTypeVisible до его значения и удалил ограничение столбца A, добавив ограничение в свойство Range.CurrentRegion. (кстати, ваш оригинальный код был MsgBox Rowsне MsgBox Rowz, Наверное, лучше всего использовать Option Explicit чтобы избежать опечаток, как это).

Другие вопросы по тегам