gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 08:05:27 25 4
gpt4 key购买 nike

好吧,伙计们,这里完全困惑了......

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

我正在使用xlCellTypeVisible但没有效果。即使已过滤,该函数仍返回整个范围。

更令人困惑的是,我创建了一个几乎相同的 Sub(而不是 Function,这样我就可以单步执行),它正确地返回了所需的返回值!我被难住了;我只是无法在函数中复制它。我怀疑这与结构化引用有关。

当我在 Excel 中的任何单元格中输入时,函数“filteredRange”错误地返回整个范围“$F$2:$F74”。

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

而以下子“测试”确实返回正确答案“$F$2:$F$14”。我似乎无法辨别为什么他们不输出相同的输入变量是相同的。

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 有一些 limitationsSpecialCells(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

关于vba - xlCellTypeVisible 不返回过滤范围,而是返回整个范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23702794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com