【发布时间】:2013-08-30 12:49:37
【问题描述】:
我在 VBA 中使用过滤范围时遇到问题。 如果我使用宏来过滤范围,然后使用另一个来调用小计工作表函数以在第一列中找到最小值,我会得到过滤范围的预期最小值;这就是我要的。此处显示:
Sub TestFilterTrans()
Call FilterTrans("111Wall")
End Sub
Sub TestMinDate()
MsgBox MinTransDate()
End Sub
Sub FilterTrans(Inv As String)
Range("TransLabels").Select
Selection.AutoFilter
ActiveSheet.Range("Trans").AutoFilter Field:=2, Criteria1:=Inv
End Sub
Function MinTransDate()
MinTransDate = Application.WorksheetFunction.Subtotal(5, Worksheets("Transactions").Range("TransDates"))
End Function
但是,如果从工作表中,我调用一个函数首先调用过滤过程,然后调用一个函数来查找最小值,它会选择整个范围内的最小值,就像未过滤一样,如下所示:
Function IncepDate(Inv As String)
Dim d As String
Call FilterTrans(Inv)
d = MinTransDate()
Call FilterOff
IncepDate = d
End Function
谁能告诉我为什么过滤器在第二种情况下似乎不起作用?
【问题讨论】:
-
通常一个函数只返回一个值并且不对工作表进行其他更改。您可能需要使用 Sub 而不是 Function 来操作过滤器。
-
我认为 "from a sheet" 是这个问题的根源。请参阅下面的答案:)