这是我的问题。
因此,应用于范围K3:K10
,我有几个不同的条件格式规则,需要一个特定的文本字符串,包含引用单元格的内容和一个常量文本字符串。每个规则为特定引用的单元格和常量文本字符串(DEAD或ALIVE)组合应用不同的颜色。例如,在该范围内,如果单元格包含单词“Dog”,然后是空格,然后单词“Dead”,则将其格式化为Red。列D
和E
中的图例显示了标准组合(动物和死亡/活着)对每种动物适用的颜色。我想要做的是,能够在列C
中使用下拉列表为动物选择颜色,并让CF更改K3:K10
范围内任何单元格的格式在特定规则为真时匹配列C
中相关行的格式/样式。
因此,如果K3
为“Dog Dead”,则应用与单元格D3
中相同的格式,或者如果它是“Dog Alive”,则应用与E3
相同的格式。我不想让CF让任何包含“Dog Dead”红色或“Dog Alive”的细胞呈红色,因为狗的颜色可能不是红色。它可以是绿色或蓝色。
所以,我想我想用VBA实现动态条件格式化。有人可以帮助我开始吗?
谢谢,
安迪。
答案 0 :(得分:0)
起点!!
在Sheet事件中:
Private Sub Worksheet_Change(ByVal Target As Range)
ApplyCond Range("K" & Target.Row)
End Sub
在一个模块中:
Public Sub ApplyCond(xx As Range)
If xx.Value = "" Then Exit Sub
xx.FormatConditions.Delete
xx.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:=xx.Value
kk = Split(xx.Value)
a = -1
b = -1
For i = LBound(kk) To UBound(kk)
Select Case kk(i)
Case "Dead": a = 4
Case "Alive": a = 5
Case Else
For e = 3 To 9999
If Range("B" & e).Value = "" Then Exit For
If Range("B" & e).Value = kk(i) Then
b = e
End If
Next
End Select
Next
' Apply Format
On Error Resume Next
If (a > 0) And (b > 0) Then
With xx.FormatConditions(1).Interior
.PatternColorIndex = Cells(b, a).Interior.PatternColorIndex
.Color = Cells(b, a).Interior.Color
.TintAndShade = Cells(b, a).Interior.TintAndShade
.Pattern = Cells(b, a).Interior.Pattern
.PatternThemeColor = Cells(b, a).Interior.PatternThemeColor
.ThemeColor = Cells(b, a).Interior.ThemeColor
.PatternTintAndShade = Cells(b, a).Interior.PatternTintAndShade
End With
With xx.FormatConditions(1).Font
.Bold = Cells(b, a).Font.Bold
.Italic = Cells(b, a).Font.Italic
.Underline = Cells(b, a).Font.Underline
.Strikethrough = Cells(b, a).Font.Strikethrough
.ThemeColor = Cells(b, a).Font.ThemeColor
.TintAndShade = Cells(b, a).Font.TintAndShade
.Color = Cells(b, a).Font.Color
.TintAndShade = Cells(b, a).Font.TintAndShade
End With
End If
End Sub
您需要验证拆分公式。使用LCase功能或其他过滤器可能更好 在我的功能中,我不会使用专栏" C"。