我正在通过 Worksheet_Change 事件运行一段代码,并且让它在事件开始时调用 unprotect sub 并在事件结束时匹配调用 protected sub。这按预期工作。
我正在尝试在工作簿打开事件中将保护设置为 userinterfaceonly:=true ,以避免每次更改事件触发时取消保护和重新保护的需要(更多的是为了探索功能而不是其他任何事情)。问题是,如果工作表受到保护(即使 UserInterfaceOnly = True),则在锁定范围上更改条件格式的代码不可避免地会出现错误,尽管如果工作表未手动或通过 VBA 取消保护该行之前的工作表,则它可以正常工作且符合预期并在那条线之后重新保护。
我玩了一下,似乎在与更改锁定单元格的条件格式有关的任何事情上都会出错。我想知道在 UserInterfaceOnly 范围内是否不允许在受保护的工作表时更改锁定范围的条件格式?如果有人知道这是否是一个限制,以及这个论点是否有任何其他限制,那么很高兴知道。
在我的“本工作簿”模块中,我有:
Private Sub Workbook_open()
ActiveSheet.Protect userinterfaceOnly:=True
End Sub
在我的工作表模块中,我有以下内容 - 当该情况解析为 true 时,FormatConditions.Delete 行错误带有运行时错误 1004:应用程序或对象定义错误。
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
, use AllowFormattingCells:=True
。这允许条件格式修改受保护的单元格。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)