我有一个简单的语法错误。在一个代码块中,我有一行代码来保护一个工作表。
Sheets("xyz").Protect password = "abc", AllowFiltering:=True
现在我无法使用密码"解除对工作表的保护;abc";。我意识到我错过了password
之后的:
。有人能帮我找出这个例子中的密码吗?
所以您所做的是编写一个布尔表达式作为密码。VBA会将术语password = "abc"
求值为True或False,很可能为False,除非您在某个地方声明了包含abc
的变量password
。
我不知道密码到底写了什么。尝试了几种变体,结果如下:
' Sheets("xyz").Unprotect "False" ' Didn't work
' Sheets("xyz").Unprotect "0" ' Didn't work
' Sheets("xyz").Unprotect 0 ' Didn't work
Sheets("xyz").Unprotect False ' Works!
一般建议:将您的密码定义为(命名的(常量,这样,如果有一天您想更改密码,就不必在代码中搜索所有保护/取消保护语句。
Const MySecret = "abc"
...
Sheets("xyz").Protect Password:=MySecret
...
Sheets("xyz").Unprotect Password:=MySecret
我假设您没有声明变量Password
。在这种情况下,使用Option Explicit
可以避免该错误,因为编译器会抱怨。
如果出现以下情况:
Sheets("xyz").Protect password = "abc"
由于FunThomas解释的原因,锁定了表单-然后严格地说,以下将解锁它:
Sheets("xyz").Unprotect password = "abc"