繁体   English   中英

保护工作表时出现运行时错误'1004'

[英]Run-time error '1004' while protecting sheets

运行由控制箱触发的系统。 该代码使用以下代码取消保护程序中几乎所有表的保护(没有问题):

Sub UnprotectSheets()

    Dim wks As Worksheet

    For Each wks In Worksheets
        If wks.Name Like "Source Data Table" Or wks.Name Like "Permit Route Dashboard" _
        Or wks.Name Like "Administrative Tasks" Or wks.Name Like "RP Calculation" Then GoTo Nextwks
        wks.Unprotect Password:="Password"
Nextwks:
    Next

End Sub

然后,程序进行分析。 最后,我想使用以下代码保护相同的工作表

Sub ProtectSheets()

    Dim wks As Worksheet

    For Each wks In Worksheets
        If wks.Name Like "Source Data Table" Or wks.Name Like "Permit Route Dashboard" _
        Or wks.Name Like "Administrative Tasks" Or wks.Name Like "RP Calculation" Then GoTo Nextwks
        wks.Protect Password:="Password"
Nextwks:
    Next

End Sub

但是-我每次都会收到以下错误消息:

运行时错误'1004'对象_Worksheet的方法'Protect'失败

任何帮助表示赞赏。 谢谢

问题是您试图保护已经受保护的工作表。 因此,只需运行以下命令:

Option Explicit

Sub TestMe()

    Dim wks As Worksheet

    For Each wks In Worksheets
        If wks.ProtectContents Then
            Debug.Print wks.Name & " is protected!"
        Else
            Debug.Print wks.Name & " is not protected!"
        End If
    Next wks

End Sub

然后转到立即窗口( Ctrl + G ),然后查看在此处编写的报告。 它看起来应该像这样:

Sheet1 is not protected!
Sheet2 is protected!

通常,除非是为了捕获错误,否则请尝试避免在VBA(以及每种编程语言)中使用GoTo 人们看到这些会生气。

暂无
暂无

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

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