Несколько фильтров на VBA Excel не работает - PullRequest
0 голосов
/ 11 марта 2020

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

Вот мой код:


    Sub InputFilter()

Dim strInput As String
Dim strInput1 As String
Dim strInput2 As String

strInput = InputBox("Enter your value to filter WPP")
Selection.AutoFilter
ActiveSheet.Range("$A$4:$BL$351").AutoFilter Field:=8, Criteria1:=strInput 'User Input for desired WPP

strInput1 = InputBox("Enter your Product Category")
Selection.AutoFilter
ActiveSheet.Range("$A$4:$BL$351").AutoFilter Field:=6, Criteria1:=strInput1 'User Input for Product Category

strInput2 = InputBox("Enter your Manufacturing Code")
Selection.AutoFilter
ActiveSheet.Range("$A$4:$BL$351").AutoFilter Field:=4, Criteria1:=strInput2 'User Input for Manufacturing Code

    'Sorting FACodes
    ActiveWorkbook.Worksheets("Raw Data Domestic").AutoFilter.Sort.SortFields.Add _
        Key:=Range("C4:C351"), SortOn:=xlSortOnValues, Order:=xlAscending, _
        DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Raw Data Domestic").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

End Sub

Ответы [ 2 ]

0 голосов
/ 11 марта 2020

Я получил ошибку времени выполнения "1004", Обновление: я получил Работаю с этим вместо ActiveSheet.AutoFiterMode = False и просто удаляю Selection.AutoFilter после каждого ввода

Sub InputFilter()

Dim strInput As String
Dim strInput1 As String
Dim strInput2 As String

ActiveSheet.AutoFilterMode = False
strInput = InputBox("Enter your value to filter WPP")
'Selection.AutoFilter
ActiveSheet.Range("$A$4:$BL$351").AutoFilter Field:=8, Criteria1:=strInput 'User Input for desired WPP

strInput1 = InputBox("Enter your Product Category")
'Selection.AutoFilter
ActiveSheet.Range("$A$4:$BL$351").AutoFilter Field:=6, Criteria1:=strInput1 'User Input for Product Category

strInput2 = InputBox("Enter your Manufacturing Code")
'Selection.AutoFilter
ActiveSheet.Range("$A$4:$BL$351").AutoFilter Field:=4, Criteria1:=strInput2 'User Input for Manufacturing Code

    'Sorting FACodes
    ActiveWorkbook.Worksheets("Raw Data Domestic").AutoFilter.Sort.SortFields.Add _
        Key:=Range("C4:C351"), SortOn:=xlSortOnValues, Order:=xlAscending, _
        DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Raw Data Domestic").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

End Sub
0 голосов
/ 11 марта 2020

Посмотрите, работает ли это. Удалите оставшуюся часть кода ниже при тестировании

Dim F1 As String, F2 As String, F3 As String

F1 = InputBox("Enter your value to filter WPP")
F2 = InputBox("Enter your Product Category")
F3 = InputBox("Enter your Manufacturing Code")

With ThisWorkbook.Sheets("Sheet1").Range("A4:B351")
    .AutoFilter Field:=8, Criteria1:=F1
    .AutoFilter Field:=6, Criteria1:=F2
    .AutoFilter Field:=4, Criteria1:=F3
End With

Вам также необходимо указать лист (поменять Sheet1 с именем вашего листа)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...