Из VBA мне нужно знать список всех критериев, которые я могу выбрать в столбцах фильтрации. Например, следующий список: [1-АЛЬФА;2-БЕТА;...5-ETC]
Получить весь список возможных критериев фильтрации
Ответы (1)
Скажем, у нас есть такие данные, как:
и мы фильтруем размер для большой, и мы хотим перечислить критерии для столбца A:
Sub ShowCriteria()
Dim r As Range, c1 As Collection, c2 As Collection
Dim msg As String
Set c1 = New Collection
Set c2 = New Collection
Dim LastRow As Integer
With Worksheets("sheet1")
LastRow = .Range("A" & Worksheets("sheet1").Rows.Count).End(xlUp).Row
End With
On Error Resume Next
For Each r In Range("A2:A" & LastRow)
v = r.Value
c1.Add v, CStr(v)
If r.EntireRow.Hidden = False Then
c2.Add v, CStr(v)
End If
Next
On Error GoTo 0
msg = "Full criteria"
For i = 1 To c1.Count
msg = msg & vbCrLf & c1.Item(i)
Next i
msg = msg & vbCrLf & vbCrLf & "Visible criteria"
For i = 1 To c2.Count
msg = msg & vbCrLf & c2.Item(i)
Next i
MsgBox msg
End Sub
Будет отображаться:
person
Gary's Student
schedule
21.04.2015
Вот что я имел в виду, я думаю, что набор критериев изначально недоступен, и вам нужно создать его самостоятельно, начиная с данных. Но я думаю (вероятно, из соображений эффективности) OP хотел знать, хранятся ли они где-то как свойство существующего объекта:
- person Matteo NNZ; 21.04.2015
@MatteoNNZ Я думаю, вы правы.............. если мне нужно управлять AutoFilter с помощью VBA, я обычно собираю критерии, прежде чем применять любой из этих критериев.
- person Gary's Student; 21.04.2015
@pnuts Вы правы!! .................Мне также нужно что-то лучше, чем MsgBox
- person Gary's Student; 21.04.2015
AutoFilter
классаRange
во время выполнения. То есть, насколько мне известно, объект, имеющий в качестве свойства полный список доступных критериев, никогда не создается — следовательно, вы не можете получить этот список из него. Другими словами, вам, возможно, придется реализовать собственныйLoop
для создания собственной коллекции. Но опять же, не уверен, так что давайте еще немного подождем, прежде чем писать какой-либо код. - person Matteo NNZ   schedule 21.04.2015