2016-07-19 26 views
0

は、私は私が唯一の文字列を変更していconditionnal整形のためにこのコードを持っている:VBA、同じ色、複数の文字列での条件付き書式設定?

Cells.FormatConditions.Delete 

With Range("$A$1:$H$17").FormatConditions.Add(Type:=xlTextString, String:="CPA", TextOperator:=xlContains) 
    .Interior.Color = RGB(105, 191, 44) 
End With 
With Range("$A$1:$H$17").FormatConditions.Add(Type:=xlTextString, String:="CPN", TextOperator:=xlContains) 
    .Interior.Color = RGB(105, 191, 44) 
End With 
With Range("$A$1:$H$17").FormatConditions.Add(Type:=xlTextString, String:="CSS", TextOperator:=xlContains) 
    .Interior.Color = RGB(105, 191, 44) 
End With 
With Range("$A$1:$H$17").FormatConditions.Add(Type:=xlTextString, String:="RL", TextOperator:=xlContains) 
    .Interior.Color = RGB(105, 191, 44) 
End With 

は、これらすべての行のための任意の代替がありますので、私はより短く、より効果的な方法でそれを書くことができますか?

このマクロは、「CPAzergfzergfer」を含むセルであっても色付けされます。正確な文字列を含むセルのみを色付けするマクロをどのように書くことができますか?

+0

は、プログラミング言語を明記してくださいあなたは適切なタグを使用して追加しています –

+0

ただそれを更新しました、ありがとうOhad Eytan –

答えて

1

あなたはこのように、条件付き書式のための条件を指定するために、配列を使用することができます。

myArray = Array("CPA", "CPN", "CSS", "RL") 
For myLoop = LBound(myArray) to UBound(myArray) 
    With Range("$A$1:$H$17").FormatConditions.Add(Type:=xlTextString, String:=myArray(myLoop), TextOperator:=xlEqual) 
     .Interior.Color = RGB(105, 191, 44) 
    End With 
Next 

は、私もそれが唯一の選択ではなく、テキスト値に一致する項目を選択してくださいTextOperatorを変更しましたにはのテキスト値が含まれています。

0

デイブの答えは素晴らしいです。別のオプションがあります。これは、すべての条件を1つの数式に置きます。これは、それほど大きくない条件付き書式設定ダイアログボックスでの管理が容易になると思います。

私はマクロの記録をオンにし、CFダイアログを開き、次の式を入力する:

=OR(A1="CPA",A1="CPN",A1="CSS",A1="RL") 

ここで生成されたthecodeのクリーンアップバージョンです:

Sub Macro1() 
ActiveSheet.Range("A1:H17").FormatConditions.Add Type:=xlExpression, Formula1:= _ 
    "=OR(A1=""CPA"",A1=""CPN"",A1=""CSS"",A1=""RL"")" 
Selection.FormatConditions(1).Interior.Color = RGB(105, 191, 44) 
End Sub 
関連する問題