VBA:从过滤器中检索数据并将其存储在变量中

时间:2015-06-24 08:57:58

标签: excel vba excel-vba variables filter

我在列标题" Area"上有一个过滤器当应用时,仅显示区域与所应用的过滤器匹配的记录,例如, 5。

是否有一段代码将过滤器中的值存储在变量中?

过滤器使用的代码是:

ActiveSheet.Range("$A$3:$BN$197").AutoFilter Field:=2, Criteria1:=

所以我想要的是:

dim Filter As String
Filter = ActiveSheet.Range("$A$3:$BN$197").AutoFilter Field:=2, Criteria1:=

但问题是因为它是一个过滤器,区域过滤可以改变,即一个用户可以过滤区域5而另一个用户过滤区域4。

1 个答案:

答案 0 :(得分:1)

基本上你想要这样的东西:

Dim ftr                   As Filter
Dim sCriterion            As String
Set ftr = ActiveSheet.AutoFilter.Filters(2)
If ftr.On Then sCriterion = Mid$(ftr.Criteria1, 2)

只要您知道,他们就只会对一个值进行过滤。否则,您需要检查Operator,然后确定适当的过滤器类型。

对于自动事件代码,您可以使用:

Private Sub Worksheet_Calculate()
Dim ftr                   As Filter
On Error Goto hell
Set ftr = ActiveSheet.AutoFilter.Filters(2)
If ftr.On Then
   application.enableevents = False
   debug.print ftr.criteria1
   Range("E205").value = Mid$(ftr.Criteria1, 2)
End If

hell:
   application.enableevents = true
End Sub

右键单击工作表标签,选择查看代码,然后将其粘贴到其中。