/ / VBAを使用した条件付き書式設定、書式設定用に別のセルを参照して範囲を動的にスタイリングする - Excel、VBA、動的、書式設定、条件付き

VBAを使用した条件付き書式設定、書式設定用の別のセルを参照して範囲を動的にスタイリングする - Excel、VBA、動的、書式設定、条件付き

ここに私の問題がある。

ここに画像の説明を入力

したがって、範囲に適用されます K3:K10私はいくつかの異なる条件付き書式設定をしています参照セルの内容と定数テキスト文字列で構成される特定のテキスト文字列を必要とするルール。各ルールは、特定の参照セルと定数テキスト文字列(DEADまたはALIVE)の組み合わせに対して異なる色を適用します。たとえば、範囲内で、セルに単語 "Dog"、スペース、単語 "Dead"が含まれている場合は、赤でフォーマットされます。列の凡例 D そして E 基準の組み合わせ(動物と死亡/生存)のために各動物にどのような色が当てはまるかを示します。私がしたいのは、列のドロップダウンリストで動物の色を選択できるようにすることです C、CFが範囲内のいずれかのセルの書式を変更するようにします K3:K10 列内の関連行の書式設定/スタイルと一致させる C 特定のルールが真の場合。

だから、もし K3 "Dog Dead"である場合は、cellと同じ書式を適用します D3 または「Dog Alive」の場合は、同じ書式を E3。私は、犬の色が赤でないかもしれないので、CFに "犬の死んだ"赤や "犬の生きている"という光を赤にするようCFに頼む必要はありません。

だから、私はVBAを使って動的な条件付き書式設定をしたいと思います。誰かが私を助けてくれるの?

ありがとう、

アンディ。

回答:

回答№1は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"を使用しません。