xlCellTypeVisible不是返回过滤范围,而是整个范围

好的伙计,在这里完全困惑…

我有一个Access中的Excel链接表。 我想写一个vba函数,返回该表的给定列的过滤范围地址 。 请记住,我试图坚持使用结构化引用(例如,Table1 [[#Data],[Column2]]),因为它是一个链接表,并且devise为随时间刷新和更改。

我正在使用xlCellTypeVisible无济于事。 该函数仍然返回整个范围,即使它被过滤。

更令人困惑的是我创build了一个几乎完全相同的Sub(而不是Function,所以我可以通过)正确地返回所需的返回! 我难倒了; 我只是不能在函数中复制它。 我怀疑它与结构化引用有关。

当我在Excel中input任何单元格时,函数“filteredRange”不正确地返回整个范围“$ F $ 2:$ F74”。

=filteredRange(Table_RyanDB[[#Data],[LC]]) 

而下面的子“testing”确实返回了正确答案“$ F $ 2:$ F $ 14”。 我似乎无法辨别为什么他们不输出相同的inputvariables是相同的。

 Sub test() Dim theRange As Range Set theRange = Range("Table_RyanDB[[#Data],[LC]]") MsgBox theRange.Rows.SpecialCells(xlCellTypeVisible).Address End Sub Function filteredRange(theRange As Range) filteredRange = theRange.SpecialCells(xlCellTypeVisible).Address End Function 

Excel UDF有一些限制 , SpecialCells(xlCellTypeVisible)在这里不起作用。 改用这个:

 Function filteredRange(theRange As Range) Dim rng As Range Dim r As Range For Each r In theRange.Rows If Not r.Hidden Then If rng Is Nothing Then Set rng = r Else Set rng = Union(rng, r) End If End If Next If Not rng Is Nothing Then filteredRange = rng.Address End Function