Не удалось получить свойство 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
чтобы избежать опечаток, как это).