如何在VBA中更改条件格式的优先级

我在Excel 2013中使用VBA,我有一个关于设置优先级的问题。 我试图改变我的条件格式在一个范围内的优先级 。 结束之前的最后一行如果是我有问题的地方。 截至目前只是插入#1的位置,而不是插入#2的位置。 我已经尝试过关于微软的文档,比如这个页面 – >

https://msdn.microsoft.com/en-us/library/office/microsoft.office.interop.excel.formatcondition.priority.aspx

以及显示示例 – >的其他有用页面

https://blogs.office.com/en-us/2005/10/14/conditional-formatting-using-vba-some-examples/

但是这些最终都没有结束工作。

Range("F6:F9").Select If Selection.FormatConditions(2).Interior.TintAndShade = 0.799981688894314 Then Else Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _ "=MATCH($F$3,$H$6:$H$9,FALSE)" Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority [...] ***Selection.FormatConditions(1).Priority = 2*** End If 

我find了解决方法! 不要试图将新格式插入到#2位置,首先将新格式设置到#1位置, 然后将#2位置设置到#1,然后将新格式设置到#2位置。 本质上, 移动一切 ,它会自己照顾自己。

 Range("F6:F9").Select If Selection.FormatConditions(2).Interior.TintAndShade = 0.799981688894314 Then Else Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _ "=MATCH($F$3,$H$6:$H$9,FALSE)" ***Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority*** [...] ***Selection.FormatConditions(2).SetFirstPriority*** Selection.FormatConditions(1).StopIfTrue = False End If 

我testing了包含值1,2,3,4的条件格式,并使用了以下内容:

 Range("F6:F9").FormatConditions.Item(1).Priority = 2 

然后下面的返回2:

 Debug.Print Range("F6:F9").FormatConditions.Item(1).Priority