由于空白超链接条件,Excel VBA高级筛选器出现问题

时间:2019-02-28 15:23:16

标签: excel vba advanced-filter

我在尝试在Excel中设置VBA代码时遇到了噩梦。如果仅在姓名列表的底部选择条件范围(例如$ AM $ 2001:$ AM),我就能够使用1列基于人名列表的条件范围来成功过滤掉数据$ 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都用0填充。

1 个答案:

答案 0 :(得分:0)

尝试

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