Хорошо, я фильтрую лист («Данные») по критерию:
Sub Filter_Offene()
Sheets("Data").Range("A:R").AutoFilter Field:=18, Criteria1:="WAHR"
End Sub
Затем я хочу поместить отфильтрованную таблицу для заполнения списка. Моя проблема заключается в том, что количество строки могут различаться, поэтому я подумал, что могу попробовать и перечислить, где «заканчивается» отфильтрованная таблица, выполнив эту процедуру Cell.find:
Dim lRow As Long
Dim lCol As Long
lRow = ThisWorkbook.Sheets("Data").Cells.Find(What:="*", _
After:=Range("A1"), _
LookAt:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
lRow = lRow + 1
Это не всегда подсчитывает «скрытые» строки, поэтому в моем примере это не учитывает 2, а 7. Раньше я использовал .Range.SpecialCells(xlCellTypeVisible)
, но, похоже, он не работает с Cell.find выше. Есть ли у кого-нибудь идея, как я могу подсчитать видимую (= отфильтрованную) таблицу, а затем поместить ее в список?
РЕДАКТИРОВАТЬ: Я заполняю список (нефильтрованный) следующим образом:
Dim lastrow As Long
With Sheets("Data")
lastrow = .Cells(.Rows.Count, "R").End(xlUp).Row
End With
With Offene_PZ_Form.Offene_PZ
.ColumnCount = 18
.ColumnWidths = "0;80;0;100;100;0;50;50;80;50;0;0;0;0;0;150;150;0"
.List = Sheets("Data").Range("A2:R" & lastrow).Value
End With
Но это не будет работать с отфильтрованными данными.