Excel 检测范围内的条件格式

Excel 检测范围内的条件格式,excel,vba,Excel,Vba,我一直在尝试在excel上建立一个电子表格,它可以进行大量计算,但也允许其中的变量(即团队人数有时会发生变化) 在这种情况下,我有4个独立的团队。每个团队都有自己的默认条件格式,它将为该团队设置默认颜色。我只是通过检测单元格是否为空来实现这一点 正如您所看到的,显示的2个团队的默认颜色为蓝色和橙色 我遇到的问题是,当有人从橙色团队复制并粘贴到蓝色团队时,它将采用所述团队的格式。例如,如果我从橙色团队中复制并粘贴到蓝色团队中,其中以黄色显示“课程”,当我删除单词“课程”时,它应该默认返回蓝色,但

我一直在尝试在excel上建立一个电子表格,它可以进行大量计算,但也允许其中的变量(即团队人数有时会发生变化)

在这种情况下,我有4个独立的团队。每个团队都有自己的默认条件格式,它将为该团队设置默认颜色。我只是通过检测单元格是否为空来实现这一点

正如您所看到的,显示的2个团队的默认颜色为蓝色和橙色

我遇到的问题是,当有人从橙色团队复制并粘贴到蓝色团队时,它将采用所述团队的格式。例如,如果我从橙色团队中复制并粘贴到蓝色团队中,其中以黄色显示“课程”,当我删除单词“课程”时,它应该默认返回蓝色,但由于它是从橙色复制的,因此默认返回橙色

我已经成功地设置了以下设置,将格式重置回其原始的蓝色默认值(为了调试目的,当前通过按下按钮来完成)

我的问题是,最终我想将此链接到工作表更改,以允许复制和粘贴。但每次运行时,它都会在规则中创建条件格式的重复版本

所以我需要删除以前存在的条件的任何其他实例,否则它们会堆积起来

我知道这将是一个IF/THEN语句,但就我而言,我无法思考如何测试它


我现在有严重的写作障碍,所以我真的希望这是有意义的

这将循环使用
MyRange1
中应用的所有条件格式,并删除任何非优先级格式

For Each f In MyRange1.FormatConditions
    If f.Priority <> 1 Then f.Delete
Next

您是否可以删除旧条件,然后在每次复制和粘贴时恢复它们

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)

Range("A1:A100").Select

With Selection.FormatConditions.Delete
End With

Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
    "=LEN(TRIM(D2))=0"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
    .PatternColorIndex = xlAutomatic
    .ThemeColor = xlThemeColorLight2
    .TintAndShade = 0.599963377788629
End With
Selection.FormatConditions(1).StopIfTrue = False
End Sub

只需粘贴值或执行直接值传输;把CFR抛在脑后。是的,我想这就是我必须要做的。因为该范围内有多个条件格式。
For Each f In Range(MyRange1).FormatConditions
    If f.Priority <> 1 Then f.Delete
Next
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)

Range("A1:A100").Select

With Selection.FormatConditions.Delete
End With

Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
    "=LEN(TRIM(D2))=0"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
    .PatternColorIndex = xlAutomatic
    .ThemeColor = xlThemeColorLight2
    .TintAndShade = 0.599963377788629
End With
Selection.FormatConditions(1).StopIfTrue = False
End Sub