【发布时间】:2019-10-07 21:53:51
【问题描述】:
又是我——我最终会更好地了解这门语言。
基本上 - 我有一个大数据表,其中有自动过滤器 - 范围“$B$5:$Z$1697”
但是,我希望在 R 列上打开或关闭一个额外的过滤器。
因此,我需要一个 If 语句,说明当附加过滤器打开时,删除,而如果在您按下按钮时过滤器未打开 - 应用它。
我玩过这个并观看了更多我愿意承认的视频。但是,一定有一些我忽略或不理解的东西。
代码一直运行到 Else 行,它返回:
“编译错误,语法错误”。
谁能解释发生了什么?
If Sheets(4).Range("$B$5:$Z$1697").AutoFilter(Field:=17, Criteria1:="=") = True Then
'If there specific filter on column R is on then
Sheets(4).Range("$B$5:$Z$1697").AutoFilter Field:=17
'Turn off that filter.
Else: Sheets(4).Range("$B$5:$Z$1697").AutoFilter(Field:=17, Criteria1:="=")
'Else, if the filter is off, turn it on.
End If
End Sub
编辑:我已经更正了代码,将此 ELSE 行修改为此
Else: Sheets(4).Range("$B$5:$Z$1697").AutoFilter(Field:=17, Criteria1:="=") = True
但是,当我现在运行它时,这意味着它会打开过滤器,然后只需按一下按钮即可再次关闭。我怎么做才能让它一次只改变。
即如果按下按钮时过滤器打开,它只会将其关闭。
反之亦然
【问题讨论】:
-
你好! :) 干杯,我刚试了一下,它返回一个编译错误:预期:表达式?
-
不要忘记为每个范围对象引用一个 wb 和 ws。这包括
Sheets()对象。 -
为什么要使用 ':' 而不是将 else 语句的代码放在新行中?
-
真的很抱歉,我不确定您指的是什么位?您是指 Else 语句中的空白条件吗?
标签: excel vba syntax-error