Я новичок в VBA. На данный момент я пытаюсь отфильтровать данные на одном листе и скопировать результаты на другой лист. На самом деле это хорошо работает, но не работает в том случае, если автофильтр дает какие-либо результаты. В этом случае я бы увидел только заголовок.
Я попытался решить эту проблему, посчитав строки в видимом диапазоне. Теперь у меня есть эта проблема:
Для случая с 4 результатами (результаты заголовка + 4 строки) я получаю со следующим кодом 4 строки:
Sheets("Table1").UsedRange.Offset(1).SpecialCells(xlCellTypeVisible).Rows.Count
Когда у меня есть случай с 1 результатом (Заголовок первой строки + 1 результат строки) Я получаю тот же код, что и результат 1. А теперь моя проблема: когда у меня 0 результатов, я также получаю тот же код 1. Таким образом, нет никакой разницы между не результатом и одним результатом. И когда я пытаюсь считать без смещения
Sheets("Table1").UsedRange.Offset(0).SpecialCells(xlCellTypeVisible).Rows.Count'
, я всегда получаю 1. Даже когда это результаты. Кажется, что без смещения код просто считает заголовок.
Может кто-нибудь мне помочь?
Это та часть, где я использую автофильтр:
File = "File.xls"
Workbooks(File).Sheets("Table1").Activate
Sheets("Table1").Rows("1:1").AutoFilter Field:=10, Criteria1:=">=" & CDbl(Datum1), Operator:=xlAnd, Criteria2:="<=" & CDbl(Datum2)
Sheets("Table1").Rows("1:1").AutoFilter Field:=2, Criteria1:="*Text*" 'Filterung angepasst
Debug.Print "Result:"
Debug.Print Sheets("Table1").UsedRange.SpecialCells(xlCellTypeVisible).Rows.Count
Debug.Print Sheets("Table1").UsedRange.Offset(1).SpecialCells(xlCellTypeVisible).Rows.Count
If Sheets("Table1").UsedRange.Offset(1).SpecialCells(xlCellTypeVisible).Rows.Count > 1 Then
'Code for Copying
End If