Переключите фильтр столбцов, используя имя столбца вместо индекса столбца

#excel #vba

Вопрос:

Я хочу использовать кнопку, которая запускает код VBA, который будет включать и выключать фильтр в столбце таблицы.

Это то, что у меня есть до сих пор:

 Sub ToggleStatusFilter()

  With ActiveSheet.ListObjects("Table4")
    If .AutoFilter.Filters.Item(23).On Then
      .Range.AutoFilter Field:=.ListColumns("Status").INDEX
    Else
      .Range.AutoFilter Field:=.ListColumns("Status").INDEX, Criteria1:="Completed"
    End If
  End With
End Sub
 

На данный момент этот код работает. Но я хочу иметь возможность заменить элемент(23) в коде именем столбца, чтобы при добавлении новых столбцов или удалении некоторых старых столбцов из таблицы и изменении положения столбца код все равно работал без необходимости его редактирования.

Есть ли способ, которым этого можно достичь? Любая помощь будет очень признательна.

Ответ №1:

Возможно, используя ListColumn.Index (снова):

 With ActiveSheet.ListObjects("Table4")
    Dim indx As Long
    indx = .ListColumns("columnHeader").Index

    If .AutoFilter.Filters.Item(indx).On Then
 

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

1. Это достаточно просто и прекрасно работает. Спасибо за такой быстрый ответ.