У меня есть часть макроса, в которой хранятся настройки автофильтра перед его очисткой, поэтому он может повторно применить их позже. Код выглядит следующим образом:
Dim FilterArray()
With FrontPage.AutoFilter.Filters
ReDim FilterArray(1 To .Count, 1 To 3)
For f = 1 To .Count
With .Item(f)
If .On Then
FilterArray(f, 1) = .Criteria1
If .Operator Then
FilterArray(f, 2) = .Operator
If .Operator = xlAnd Or .Operator = xlOr Then
FilterArray(f, 3) = .Criteria2
End If
End If
End If
End With
Next f
End With
Это отлично работает во всех ситуациях, с которыми я сталкивался, за исключением полей даты. В случае полей даты Criteria1 и Criteria2 вызывают ошибки (ошибка, определяемая приложением или объектом), а Operator возвращает значение 7. Это произошло в Excel 2007 и все еще происходит в Excel 2013.
Я предполагаю, что причина, по которой это не работает, связана с вложенным способом, которым автофильтры обрабатывают поля даты, но есть ли способ заставить это работать с датами? Я видел и другие проблемы, связанные с применением фильтров к датам, но, конечно же, их хранение должно быть проще?
И второстепенный вопрос - что означает значение 7 для Оператора? Я могу найти только перевод значений 0-2.