Кнопка макроса для изменения фильтра

#excel #vba #excel-2007

#excel #vba #excel-2007

Вопрос:

Я хочу иметь кнопки для изменения моего фильтра Excel.

Я фильтрую свои поля, contains=something поэтому каждая кнопка должна изменять этот текст.

Кнопка 1: измените фильтр на contains=button1

Кнопка 2: измените фильтр на contains=button2

и так далее..

Комментарии:

1. Согласен с @JMax выше. Также в качестве отправной точки, если вы еще этого не сделали, запустите Macro recorder, внесите необходимые изменения в фильтр, а затем просмотрите код, сгенерированный регистратором.

2. вау, я не знал, что это так просто. Я искал начальную точку, и после комментария JMax я увидел, что есть кнопка под названием сохранить макрос. Спасибо за комментарии. Я думаю, этот поток можно удалить.

3. @Ghokun: вы можете либо удалить его самостоятельно, если считаете, что оно того не стоит (у вас есть своя кнопка удаления внизу вашего вопроса), либо, что еще лучше , вы можете опубликовать свой ответ на свой собственный вопрос и принять его, что может помочь дальнейшим читателям, у которых возникнет тот же вопрос, что иу вас было 🙂

Ответ №1:

Поскольку я сам нашел ответ, я поместил его здесь для будущей помощи.

     Sub AI()

    '            sheet range and which field you want to filter and criteria to search
        ActiveSheet.Range("$A$2:$Z$203").AutoFilter Field:=14, Criteria1:="stringtomatch"
    End Sub
  

Ответ №2:

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

 Sub Filter()
    Dim searchField As String

    searchField = "=*" amp; Range("H2") amp; "*"

    ActiveSheet.Range("$A$3:$H$18401").AutoFilter Field:=8, Criteria1:= _
        searchField, Operator:=xlAnd

End Sub
  

Ответ №3:

Я бы добавил поиск, например, в ячейку h2, которая будет управляться кнопкой вращения, меняющей поле F1. в этом случае у нас есть полное решение

  =HLOOKUP(h2;h2:h100;F1;0)
  

Это сочетается с этим макросом, представленным выше:

 Sub Filter()
     Dim searchField As String

     searchField = "=*" amp; Range("H2") amp; "*"

    ActiveSheet.Range("$A$3:$H$18401").AutoFilter Field:=8, Criteria1:= _
        searchField, Operator:=xlAnd

 End Sub