使用UDF

时间:2017-10-23 13:22:28

标签: excel-vba function vba excel

我尝试创建UDF以根据一个或多个条件过滤范围。我使用Function而不是Sub的原因是我希望能够直接从工作表中使用它,只需选择要过滤的条件和字段。

这就是我得到的:

Function FilterTable(Criteria As Range, Table As Range, Column As 
Integer)
Dim cell As Range
Dim arrList() As String, lngCnt As Long
Application.Volatile
lngCnt = 0
For Each cell In Criteria.SpecialCells(xlCellTypeVisible)
    ReDim Preserve arrList(lngCnt)
    arrList(lngCnt) = cell.Text
    lngCnt = lngCnt + 1
Next
With ActiveSheet
    If .FilterMode Then .ShowAllData
    Table.AutoFilter Field:=Column, Criteria1:=arrList, Operator:=xlFilterValues
End With
End Function

我遇到的问题是:

1-当UDF在一个单元格上时,我无法撤消过滤器(由于UDF在我删除过滤器后重新应用过滤器,因此有点预期)是否有办法删除此& #34;限制&#34 ;?现在我在单元格中使用IF公式,但我想知道UDF是否只能使用一次。

2-如果工作表中有先前过滤的范围,则会过滤该范围(.ShowAllData不能正常工作);

3-有时,如果我删除UDF并将滤镜应用到另一个范围,则之前的UDF滤波范围将变为隐藏(例如,在将滤镜应用到另一个范围后,UDF滤镜会隐藏第3~5行,这些线仍将被隐藏,并且只有在取消隐藏在上下文菜单中后才会再次出现。)

那么,有人可以帮我这个吗?提前谢谢!

0 个答案:

没有答案