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

我正在通过Worksheet_Change事件运行一段代码,并在事件开始时调用了一个unprotect sub,并在事件结束时对保护子进行了匹配调用。 这按预期工作。

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

我已经玩了一下,似乎在更改locking单元格上的条件格式的任何事情上都出错了。 我不知道是否在UserInterfaceOnly范围内不允许在工作表受保护的情况下更改locking范围的条件格式? 如果有人知道这是否是一个限制,而且这个论点还有其他的限制,那么知道这件事就太好了。

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

Private Sub Workbook_open() ActiveSheet.Protect userinterfaceOnly:=True End Sub 

在我的工作表的模块中,我有下面的 – FormatConditions.Delete行错误与运行时错误1004:应用程序或对象定义错误,当案例parsing为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 。 这允许条件格式来修改受保护的单元格。