VBA:从filter中检索数据并将其存储在variables中

我在列标题“区域”上有一个filter,应用时只显示区域匹配应用的filter的logging,例如5。

是否有一段代码将filter的值存储在variables中?

filter使用的代码是:

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:= 

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

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

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

只要你知道他们只会过滤一个值。 否则,您需要检查Operator ,然后确定适当的filter。

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

 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 

右键单击工作表选项卡,select查看代码 ,然后将其粘贴进去。