У меня 6 UserForms, которые всплывают и попросит вас выбрать переменные, которые вы хотите отсортировать:UserForms для установки нескольких критериев фильтрации
- ClientFilter
- CostCenterFilter
- UtilityFilter
- TypeOfWorkfilter
- AnalystFilter
- ProjMgrFilter
Внутри каждого из них используются выражения if для каждой переменной.
Sub UpdateCF()
Integer_CF = -1
If AU_CF.Value = True Then
Add_CF String_CF, "AU"
Range("$B$6:$AU$68").AutoFilter _
Field:=2, Criteria1:=String_CF, _
Operator:=xlFilterValues
End If
If AULaw_CF.Value = True Then
Add_CF String_CF, "AULAW"
Range("$B$6:$AU$68").AutoFilter _
Field:=2, Criteria1:=String_CF, _
Operator:=xlFilterValues
End If
...
End Sub
Sub Add_CF(String_CF() As String, NewValue As String)
Integer_CF = Integer_CF + 1
ReDim Preserve String_CF(Integer_CF)
String_CF(Integer_CF) = NewValue
End Sub
Это прекрасно работает, за исключением того, что я хочу иметь возможность сортировать по нескольким полям. Например, я хотел бы использовать «Фильтр клиентов», а затем выбрать переменную, а затем использовать «Пользовательскую форму« Центр затрат », чтобы иметь возможность одновременного включения обеих ролей.
бы я поставил это в модуле и вызовите его с форума User или поместить его в каждом UserForm –
@MichaelDowney Это зависит от того, вашей объектной модели. Некоторым людям нравится вводить логику бизнеса в свои пользовательские формы. Я предпочитаю использовать пользовательские формы для разработки «аргументов», например. для вашего случая - свойство, указывающее, должен ли фильтр AULAW быть включен, устанавливается в true, а процедура «main», которая вызвала форму пользователя, извлекает требуемый аргумент из этих свойств и вызывает соответствующую процедуру, которая активирует фильтры. Таким образом, вы централизуете «бизнес-логику», и каждая специальная форма фильтра фильтров работает одинаково. –
@MichaelDowney также вы можете использовать тот же принцип, что и вы уже работаете, -> то же самое можно использовать для установки фильтра на основе нескольких полей. Мой код выше - просто демо. Вы уже правильно создаете массивы значений фильтра и т. Д. :) –