繁体   English   中英

Excel工作表保护,其中VBA用于

[英]Excel Worksheet protection, with VBA for the

我有在工作簿打开事件上运行的VBA代码,以为所有工作表启用工作表保护。 每当我打开工作簿时,工作表保护都不会打开。 我完全困惑可能导致这种情况的原因。 代码是:

Option Explicit

Private Sub Workbook_Open()
Dim WKS As Worksheet
Dim WBK As Workbook
Set WBK = ThisWorkbook
For Each WKS In WBK.worksheets
    WKS.Protect Password:="xyz", UserInterfaceOnly:=True
Next WKS
WBK.Protect Password:="xyz"
End Sub

'  This is the before close event to make sure the user menu tab is active  on open.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim wsCurrent As Worksheet
Dim WSNew As Worksheet
Dim WBK As Workbook
Dim WKS As Worksheet

Set WBK = ThisWorkbook
Set wsCurrent = ActiveSheet
application.DisplayAlerts = False
If wsCurrent.Name = "Menu" Then
    For Each WKS In WBK.worksheets
        WKS.Protect (PW())
    Next WKS
    WBK.Save
Else
    Set WSNew = application.worksheets("Menu")
    WBK.Unprotect (PW())
    WSNew.Visible = True
    wsCurrent.Visible = False
    For Each WKS In WBK.worksheets
        WKS.Protect (PW())
    Next WKS
    WBK.Save
End If
End Sub

'This is the PW function
Function PW()
PW = "xyz"
End Function

我发现了困难的根源。 我需要在例程开始时取消保护工作簿,然后在结束时再次保护它。 我只是在最后保护它。 修改后的代码是:

Option Explicit

Private Sub Workbook_Open()
Dim WKS As Worksheet
Dim WBK As Workbook
Set WBK = ThisWorkbook
WBK.Unprotect Password:="xyz"
For Each WKS In WBK.worksheets
    WKS.Protect Password:="xyz", UserInterfaceOnly:=True
Next WKS
    WBK.Protect Password:="xyz"
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM