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

t2a7ltrp  于 2022-12-14  发布在  其他
关注(0)|答案(3)|浏览(377)

我在Excel 2013中使用VBA,遇到了一个关于设置优先级的问题。我正在尝试 * 更改某个范围中条件格式的优先级 *。End If之前的最后一行是我遇到问题的地方。到目前为止,它只插入到#1位置,而不是插入到#2位置。我尝试按照Microsoft的文档进行操作,如本页-〉
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
shstlldc

shstlldc1#

我使用包含值1、2、3、4的条件格式范围进行测试,并使用以下代码:

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

则下面的语句返回2:

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

sczxawaw2#

我找到了一个解决方法!不要尝试将新格式插入到#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
dgtucam1

dgtucam13#

这样就可以了:

Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority

相关问题