Проблема расширенного фильтра Excel VBA из-за пустых критериев гиперссылки - PullRequest
0 голосов
/ 28 февраля 2019

У меня небольшой кошмар, когда я пытаюсь настроить код VBA в Excel.Я успешно могу отфильтровать данные, используя 1 столбец в диапазоне критериев, который представляет собой список имен людей, при условии, что я выбираю только диапазон критериев внизу списка имен (например, $ AM $ 2001: $ AM$ 2100).

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

Как настроить мой код так, чтобы эти «пустые» ячейки или «0»"клетки не появляются?Это просто не будет работать из-за гиперссылки?Мой текущий код выглядит следующим образом:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Range("$F$1:$F$2000").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range _ 
       ("$AM$2001:$AM$2200"), Unique:=False  
End Sub

Как уже говорилось, проблема заключается в том, что список имен фактически заканчивается на AM2100, а не на AM2200.AM2101 - AM2200 заполнены нулями из гиперссылки.

1 Ответ

0 голосов
/ 28 февраля 2019

Попробуйте

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Range("$F$1:$F$2000").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range _ 
       ("$AM$2001:$AM$" & UsedRange.Rows.Count()), Unique:=False  
End Sub

, если это по-прежнему приводит к слишком большому количеству ячеек (используемый диапазон больше, чем количество используемых строк в столбце AM, попробуйте это

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Range("$F$1:$F$2000").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range _ 
       ("$AM$2001:$AM$" & Range("$AM$2001").End(xlDown).Row()), Unique:=False  
End Sub
...