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

允许Excel宏在受保护的工作表上运行,excel,vba,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

当我保护工作表时,以下宏无法运行

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”
,但到目前为止,这还不适合我


有什么建议吗?

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

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

您可能希望包含包含工作表保护的代码snipplet。实际上,我没有任何代码来保护工作表,我只是使用功能区中的“保护”和“取消保护”工作表按钮。我很困惑。如果您不使用代码保护工作表,您可以通过什么方式确定
Userinterfaceonly
是否不适合您?在代码开始时取消对工作表的保护,然后在代码结束时重新保护。@TimWilliams如果他设法保护Userinterfaceonly,则不需要这样做。我认为问题在于如何实现这一目标。