通过VBAvalidation工作表上设置的密码是否正确

我的密码保护工作表,我想打开validation密码后来还没有被用户更改。

我已经尝试通过VBA再次设置密码在密码被更改,以查看是否会出错,但没有提供错误的表单上。

下面的代码是我目前使用来testing这个,它的工作原理,但我不认为你应该不得不解除工作表,然后保护它来validation密码。

Sub CheckSheetPassword() Dim ws As Worksheet On Error Resume Next For Each ws In Worksheets ws.Unprotect Password:="Password" ws.Protect Password:="Password" If Err <> 0 Then MsgBox "Failed To Verify Password on: " & ws.Name Err = 0 End If Next ws End Sub 

我的代码解释:

以上代码循环遍历工作簿中的所有工作表,并通过用原始密码取消保护当前工作表来检查表单保护密码是否已更改。

然后使用原始密码保护表单,防止其保持不受保护的状态。 (如果当前密码与原始密码不同,则不会引发错误,此步骤也不会发生)。

如果代码无法取消保护工作表,那么它将会抛出一个错误,并且会出现一个消息框让我知道密码已经在表格中被更改了。

在评估下一个工作表之前,我将错误计数重置为零,以确定哪些工作表仍然有正确的密码。

我所要求的是可以做到这一点,而不必取消保护表格?

使用密码解除表单保护后,您可以validation表单是否受到保护。

这里是完整的代码:

 Sub CheckSheetPassword() Dim ws As Worksheet On Error Resume Next For Each ws In Worksheets ws.Unprotect Password:="Password" If ws.ProtectContents = False Then ' The sheet is unprotected, so password hasn't changed Else ' The sheet is protected, so password has changed MsgBox "Failed To Verify Password on: " & ws.Name End If Next ws End Sub 

这个问题在评论中得到了回答,说我提出的方式是正确的。