excel - 仅用户界面 :=true doesn't seem to allow VBA changes to conditional formatting?

标签 excel vba conditional-formatting spreadsheet-protection

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

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

我玩了一下,似乎在与更改锁定单元格的条件格式有关的任何事情上都会出错。我想知道在 UserInterfaceOnly 范围内是否不允许在 protected 工作表时更改锁定范围的条件格式?如果有人知道这是否是一个限制,以及这个论点是否还有任何其他限制,那么很高兴知道。

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

Private Sub Workbook_open()

ActiveSheet.Protect userinterfaceOnly:=True

End Sub

在我的工作表模块中,我有以下内容 - FormatConditions.Delete 行错误,并出现运行时错误 1004:当该情况解析为 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

最佳答案

.Protect UserInterfaceOnly:=True 一起使用 AllowFormattingCells:=True。这允许条件格式修改 protected 单元格。

关于excel - 仅用户界面 :=true doesn't seem to allow VBA changes to conditional formatting?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24999377/

相关文章:

vba - Excel VBA 中的高效小写字母

excel - 对象项不支持此属性或方法

java - 使用 Java 获取 Excel 信息

excel - MS Office VBA 从 2003 年到 2010 年的变化

c++ - 通过 C++ DLL 将 Arduino 字符串转换为 Excel BSTR 的随机字符

excel - VBA中的条件格式,基于函数

excel - Conditional Formatting,使用公式根据不同的单元格值范围进行格式化

Excel 查找相等的单元格

VBA 宏运行速度极慢

.net - 从 vba 调用 .net 库方法