VBA: как скрыть отфильтрованные (объединенные) столбцы?

Я пытаюсь реализовать код VBA, который скрывает столбцы, которые являются «ненужными» для выбранного фильтра.

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

Например. Фильтрация для типа A имеет данные в столбцах E и F, а для типа B — данные в E и G и т. д.

Теперь я хочу в любой момент отображать только столбцы, в которых есть данные, чтобы сделать набор данных более удобным для пользователя.

В настоящее время я работаю над этим кодом:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c As Long
    Dim n As Long
    Application.ScreenUpdating = False
    n = Rows(2).Find(What:="*", SearchDirection:=xlPrevious).Column
    For c = 3 To n
        Cells(3, c).EntireColumn.Hidden = (Application.CountA(Columns(c)) < 2)
    Next c
    Application.ScreenUpdating = True
End Sub

Как вы могли заметить, это не скрывает столбцы на основе «Активного фильтра» из слайсера и не срабатывает при изменении фильтра (например, при выборе типа B, а не типа A в слайсере).


person VBANewbie    schedule 21.08.2017    source источник


Ответы (1)


person    schedule
comment
Спасибо, кажется, это работает! Тем не менее, я все еще борюсь с непрерывным обновлением выбора слайсера. Например. открытие некоторых и скрытие некоторых столбцов в зависимости от выбора, выбранного в слайсере! - person VBANewbie; 21.08.2017
comment
Извините, кажется, я неправильно понял ваш вопрос. Я полностью отключился от слайсера. Я посмотрю, смогу ли я сделать это лучше - person Moacir; 21.08.2017
comment
Спасибо, я не могу найти способ запускать/выполнять код с помощью слайсеров, особенно при реализации на обычной таблице, а не на сводной таблице. - person VBANewbie; 22.08.2017