工作表保护设置使用ws.protect – 但不使用菜单取消保护(审查 – 取消保护表)

我有以下代码来保护Excel 2007中工作簿的图纸

Private Sub password_protectallsheets() For Each ws In Worksheets ws.protect Password = "edc1" Next End Sub 

但是当我尝试通过Excel 2007菜单(复查 – >解除保护表单)使用密码取消保护表单时,表示您提供的密码不正确。

任何帮助非常感激。

密码参数需要用“:=”来指定 – 不只是“=”。 一般情况下,方法的参数是这样的:

 ws.protect Password := "edc1" 

为了让编译器捕获这些types的错误,在模块的开头总是使用Option Explicit,正如JMax在上面所做的那样。 当你这样做的时候,当你忘记“:”选项时,编译器会给你一个“Variable not Defined”的错误。Explicit会为你节省大量的时间和其他types的variables声明错误。 要为所有新模块启用它,请在VBE中选中工具>选项>编辑>需要variables声明。

我无法弄清的部分是为什么在没有“:”密码的情况下分配密码。 我本来希望工作表被保护,但没有密码。

Ws.Unprotect是否真的保护工作表? – 狡猾,它不保护一个工作表,它不设置保护

在macros中设置保护为什么不logging保护工作表,并看看代码

尝试:

 Option Explicit Private Sub password_protectallsheets() Dim ws As Worksheet For Each ws In Worksheets ws.Protect "edc1" Next End Sub 

没有password键参数。
它在我的Excel 2007上工作。

顺便说一句,一定要复制/粘贴密码,或者确保检查最后一个字符是1 (1)还是l (小写字母L )。