я пытался понять это, но никакого прогресса ...Перебор критериев фильтрации
У меня есть фильтр (колонка D), и я пытаюсь создать цикл для каждого критерия (я получил в минимум 1000 критериев) на моем фильтре. Ex: Для каждого критерия на фильтре (столбец D), я буду запускать копию диапазона ...
Этот код разве работающих на всех:
Sub WhatFilters()
Dim iFilt As Integer
iFilt = 4
Dim iFiltCrit As Integer
Dim numFilters As Integer
Dim crit1 As Variant
ActiveSheet.Range("$A$1:$AA$4635").AutoFilter Field:=16, Criteria1:= _
"Waiting"
numFilters = ActiveSheet.AutoFilter.Filters.Count
Debug.Print "Sheet(" & ActiveSheet.Name & ") has " & numFilters & " filters."
If ActiveSheet.AutoFilter.Filters.Item(iFilt).On Then
crit1 = ActiveSheet.AutoFilter.Filters.Item(iFilt).Criteria1
For iFiltCrit = 1 To UBound(crit1)
Debug.Print "crit1(" & iFiltCrit & ") is '" & crit1(iFiltCrit)
'Copy everything
Next iFiltCrit
End If
End Sub
Моя ошибка, кажется, идентифицирующий мою колонку фильтра ...
все еще не работает для меня тоже ... В этом случае, он остановился перед Если структура, и когда я взял его, возвращает ошибку определения объекта –
Если я отключить Автофильтр на моем листе (unclicking фильтра на ленте данных), затем попробуйте запустить мой код выше, я также получу переменную Error 91 - Object или с переменной блока, не установленной в строке «numFilters = ...». Поэтому я добавил проверку, подобную этой 'If Not ActiveSheet.AutoFilterMode Then Exit Sub End If' (см. Обновленный фрагмент кода выше) – PeterT
Кажется, что не понимаю, что такое iFilt .. когда структура If ActiveSheet.AutoFilter.Filters.Item (iFilt) .On Затем тестируется, он напрямую заканчивается if; без теста test, возвращается одна и та же ошибка объекта @PeterT –