Пользовательский Combobox поиск, но очистить, если пуст - PullRequest
0 голосов
/ 20 марта 2019

У меня есть пользовательская форма, в которой пользователь вводит данные из выпадающего списка, и после нажатия кнопки команды фильтрует и сортирует лист, чтобы показать им только то, что нужно.

Однако я изо всех сил пытаюсь найти решение, которое гласит, что если пусто, то не применять фильтр к этому столбцу.

Кто-нибудь может помочь?

Private Sub CommandButton1_Click()
    ThisWorkbook.Sheets("Employee List").Visible = True
    ThisWorkbook.Sheets("Employee List").Select

    Sheets("Employee List").CommandButton1.Visible = False
    Sheets("Employee List").CommandButton2.Visible = False
    Sheets("Employee List").CommandButton3.Visible = True
    Sheets("Employee List").CommandButton4.Visible = True

    Worksheets("Employee List").ListObjects("Employee_List").Range.AutoFilter Field:=7, Criteria1:=ComboBox1.Value, Operator:=xlAnd
    Worksheets("Employee List").ListObjects("Employee_List").Range.AutoFilter Field:=8, Criteria1:=ComboBox2.Value, Operator:=xlAnd
    Worksheets("Employee List").ListObjects("Employee_List").Range.AutoFilter Field:=12, Criteria1:="True", Operator:=xlAnd
    Worksheets("Employee List").ListObjects("Employee_List").Range.AutoFilter Field:=30, Criteria1:="<=" & Me.ComboBox3.Value, Operator:=xlAnd
    Worksheets("Employee List").ListObjects("Employee_List").Range.AutoFilter Field:=31, Criteria1:="Yes", Operator:=xlAnd
    Worksheets("Employee List").ListObjects("Employee_List").Range.AutoFilter Field:=32, Criteria1:="No"

    Worksheets("Employee List").Columns("E:E").EntireColumn.Hidden = True
    Worksheets("Employee List").Columns("I:P").EntireColumn.Hidden = True
    Worksheets("Employee List").Columns("R:S").EntireColumn.Hidden = True
    Worksheets("Employee List").Columns("T:T").EntireColumn.Hidden = True
    Worksheets("Employee List").Columns("V:AF").EntireColumn.Hidden = True

    Me.Hide
    ActiveWorkbook.Save
End Sub

1 Ответ

1 голос
/ 20 марта 2019

Вы можете написать простую инструкцию If, чтобы проверить, имеет ли combox значение, если да, затем установить таблицу с фильтром, иначе пропустите аргумент Criteria1.

Дополнительная информация о параметре Criteria1 Аргумент диапазона Автофильтрметод можно найти здесь

Попробуйте что-то вроде этого:

If UserForm1.ComboBox1.Value <> "" Then
    Worksheets("Sheet1").ListObjects("Table1").Range.AutoFilter field:=1, _
    Criteria1:=UserForm1.ComboBox1.Value
Else
    Worksheets("Sheet1").ListObjects("Table1").Range.AutoFilter field:=1
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...