2014-08-31 32 views
0

這是我的問題。使用VBA進行條件格式化,通過引用格式化的另一個單元格動態設置範圍

enter image description here

因此,適用於範圍K3:K10,我有需要由一個引用單元格加上一個常數文本字符串的內容特定文本字符串幾種不同的條件格式規則。每條規則爲特定的引用單元格和常量文本字符串(DEAD或ALIVE)組合應用不同的顏色。例如,在範圍內,如果一個單元格包含單詞「狗」,然後是空格,然後單詞「死」,它將被格式化爲紅色。欄目DE中的圖例顯示了標準組合(動物和死/活)的顏色適用於每隻動物的顏色。我想要做的是,爲了能夠使用列C中的下拉列表爲動物選擇顏色,並讓CF更改K3:K10範圍內任何單元格的格式,以匹配格式/樣式當特定規則爲真時,列C中的相關行。

因此,如果K3是「Dog Dead」,則應用與單元D3中相同的格式,或者如果它是「Dog Alive」,則採用與E3相同的格式。我不想讓CF將任何含有「狗死者」紅色或「狗活着」的細胞變成紅色,因爲狗的顏色可能不是紅色。它可能是綠色的,或藍色的。

所以,我想我想實現使用VBA的動態條件格式,我認爲。有人可以幫助我開始嗎?

謝謝,

Andy。

+0

可能的重複[Excel - 條件格式。引用一個樣式化的單元格而不是固定的格式化](http://stackoverflow.com/questions/25538313/excel-conditional-formatting-referring-to-a-styled-cell-instead-of-having-fix) – pnuts 2014-09-01 12:50:22

回答

0

起點!!
在表日後事項:

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」。

相關問題