如果我在使用Excel vba保护工作表时出现语法错误,如何取消对工作表的保护



我有一个简单的语法错误。在一个代码块中,我有一行代码来保护一个工作表。

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"

最新更新