允许Excel宏在受保护的工作表上运行

时间:2019-10-01 22:40:18

标签: excel vba

我有以下宏,每当我保护工作表时,该宏都无法运行。

Sub ConditionalDisplay()
    With Worksheets("Data Entry")
    If .Range("C13") = "" Then
        .Rows("14:15").Hidden = True
      Else
        .Rows("14").Hidden = .Range("C13") = "lbs/gal"
        .Rows("15").Hidden = .Range("C13") = "g/L"
    End If

    If .Range("C17") = "" Then
        .Rows("18:19").Hidden = True
        Else
            .Rows("18").Hidden = .Range("C17") = "lbs/gal"
            .Rows("19").Hidden = .Range("C17") = "g/L"
    End If
End With
End Sub

如果不受保护,它将很好地工作,但是在打开工作簿时保护工作表会引发错误,因为在打开工作簿时会调用此子例程。我看到几个使用"Me.Protect Userinterfaceonly:=true"进行引用的网站,但到目前为止对我来说还没有解决。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

对于任何想知道的人,下面是解决方法:

Private Sub Workbook_Open()
    Worksheets("Data Entry").Protect Userinterfaceonly:=True
    Worksheets("Data Entry").Range("C6:C10") = ""
    Worksheets("Data Entry").Range("C12:C15") = ""
    Worksheets("Data Entry").Range("C17:C19") = ""
ConditionalDisplay
End Sub