根据自动过滤条件循环中频

我试图解决我实际上由于我对Excelmacros的经验不足而造成的一个问题。 我想build立一个基于自动filterselect的IF循环; 如果是正反馈( “Magnet”autofilter choice ),macros应显示一些先前隐藏的列。

这一个是我的实际的macros,但我有第一个if语句的问题

 Sub Hide() If ActiveSheet.Range("$B$8:$V$20").AutoFilter Field:=6, Criteria1:="Magnet" Then Range("I:N").EntireColumn.Hidden = False Else Range("I:N").EntireColumn.Hidden = True End If End Sub 

逻辑:

  1. 检查工作表是否有自动filter
  2. 检查相关领域的filter是否打开
  3. 检索标准,然后如果它符合您的要求,显示/隐藏列

尝试这个

 Sub Sample() Dim ws As Worksheet Dim af As AutoFilter '~~> Change this to the relevant worksheet Set ws = ThisWorkbook.Sheets("Sheet1") With ws '~~> Check if there is an Autofilter If .AutoFilterMode Then '~~> Set your autofilter object Set af = .AutoFilter '~~> Check if the 6th field is filtered If af.Filters(6).On Then '~~> Check if the criteria matches. If af.Filters(6).Criteria1 = "=Magnet" Then .Range("I:N").EntireColumn.Hidden = False Else .Range("I:N").EntireColumn.Hidden = False End If End If End If End With End Sub 

截图

在这里输入图像说明