userinterfaceonly:= true似乎不允许VBA更改条件格式?

Har*_*y B 6 excel vba protection conditional-formatting excel-vba

我正在通过Worksheet_Change事件运行一段代码,我让它在事件开始时调用unprotect sub,并在事件结束时调用一个protect sub.这按预期工作.

我正在尝试将保护设置为userinterfaceonly:=在工作簿打开事件中为true,以消除每次更改事件触发时取消保护和重新保护的需要(更多只是为了探索功能而不是其他任何事情).问题是,如果工作表受到保护(即使使用UserInterfaceOnly = True),更改锁定范围上的条件格式的代码也会发生错误,尽管它可以正常工作并且如果工作表未受到保护,无论是手动还是通过VBA在该行之前取消保护工作表在那条线之后重新保护.

我玩了一下,似乎有任何关于更改锁定单元格上的条件格式的错误.我不知道是否在锁定范围内改变条件格式,而被保护片不UserInterfaceOnly的范围之内允许?如果有人知道这是否是一个限制,如果这个论点有任何其他限制,那么很高兴知道.

在我的"本工作簿"模块中,我有:

Private Sub Workbook_open()

ActiveSheet.Protect userinterfaceOnly:=True

End Sub
Run Code Online (Sandbox Code Playgroud)

在我的工作表模块中,我有以下 - FormatConditions.Delete行错误,运行时错误1004:应用程序或对象定义错误,当Case解析为true时.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$D$6" Then
    Application.ScreenUpdating = False
        Select Case Range("D6")
            Case "Select Function"
                Range("F6").Value = ("")
                Range("H4:I4").Select
                    Selection.FormatConditions.Delete <<<<<<THIS LINE ERRORS
                    Selection.ClearContents
                Call DeleteButtons
                Call HideAll
                Range("D6").Select
            Case "Goods In & Redelivery"
                Range("F6").Value = ("EXPLANATORY TEXT")
                Call DeleteButtons
                Range("D10:F10").ClearContents
                Call UnHideAll
                Call HideCollection
                Call FillDelivery
                Call GIRButtons
                Range("D10").Select
            Case "Collection & Redelivery"
                Range("F6").Value = ("EXPLANATORY TEXT")
                Call DeleteButtons
                Call UnHideAll
                Call HideGoodsIn
                Call ClearDelivery
                Call CRButtons
                Range("H4").Select
            Case "Delivery Only"
                Range("F6").Value = ("EXPLANATORY TEXT")
                Call DeleteButtons
                Call UnHideAll
                Call HideGoodsInCollection
                Call ClearDelivery
                Call DelButtons
                Range("H4").Select
        End Select
    Application.ScreenUpdating = True
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)

小智 1

连同.Protect UserInterfaceOnly:=True,使用AllowFormattingCells:=True。这允许条件格式修改受保护的单元格。