根据自动过滤条件循环中频
我试图解决我实际上由于我对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
逻辑:
- 检查工作表是否有自动filter
- 检查相关领域的filter是否打开
- 检索标准,然后如果它符合您的要求,显示/隐藏列
尝试这个
码
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
截图