Итак, исходя из моего понимания вашего вопроса, это не должно быть слишком сложно.Вы можете получить значение в выпадающих списках, используя CboYear.Value
и cboUnit.Value
.Затем вы можете использовать блок with
с вашим диапазоном листов и использовать два .autofilter
, ссылаясь на соответствующий field:=
, являющийся вашим фильтруемым столбцом, и Criteria1:=RespectiveComboBox.Value
, содержащий выбор в выпадающем списке.Обратите внимание, что если вы не сделаете выбор ни для одного из полей, это, скорее всего, приведет к ошибке.Также подумайте о том, чтобы поставить условие фильтра в событие ComboBox_Change()
, чтобы оно обновлялось при каждом изменении выбора.
Option Explicit
Private Sub cboYear_Change()
With Sheets("LookUpLists").Range("A1:AZ100") 'replace with an appropriate range
.AutoFilter field:=2, Criteria1:=cboYear.Value 'edit to appropriate field
.AutoFilter field:=3, Criteria1:=cboUnit.Value 'edit to appropriate field
End With
End Sub
Private Sub cboUnit_Change()
With Sheets("LookUpLists").Range("A1:AZ100") 'replace with an appropriate range
.AutoFilter field:=2, Criteria1:=cboYear.Value 'edit to appropriate field
.AutoFilter field:=3, Criteria1:=cboUnit.Value 'edit to appropriate field
End With
End Sub
Отдельное примечание: вы всегда должны использовать Option Explicit
в верхней части ваших модулей.,Вы можете включить это автоматически в VBA -> инструменты.Это поможет вам найти ошибки и ошибки (например, не объявлять O с помощью оператора Dim
)