2016-06-15 3 views
1

特定のセルが条件付き書式からTRUE値を返してから、返された場合は行全体を強調表示するかどうかを判断しようとしています本当。条件付き書式設定はB列にあり、行全体を強調表示します。条件付き書式設定がTRUEであるかどうかのテストVBAおよび行全体をハイライト

条件付き書式設定がB列でTRUEを返した場合は、最終的にF列に数値を追加しようとしていますが、条件付き書式設定がtrueを返すかどうかを簡単に判断できる場合は、私はすべてのフォーラム、サイト、サンプルなどを検索しましたが、私は見つけることができましたが、まだそれを動作させることができませんでした。

複数の異なるインスタンスの大量のデータを検索する条件付き書式設定を実行しています。私がそれを行う方法を理解する唯一の方法は、各条件を別々の条件付きフォーマットとして実行することでした。

Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _ 
"=ISNUMBER(SEARCH(""Acadia Realty Trust "",B1))" 
Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority 
With Selection.FormatConditions(1).Interior 
.PatternColorIndex = xlAutomatic 
.Color = 65535 
.TintAndShade = 0 
End With 
Selection.FormatConditions(1).StopIfTrue = False 
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _ 
"=ISNUMBER(SEARCH(""Aimco "",B1))" 
Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority 
With Selection.FormatConditions(1).Interior 
.PatternColorIndex = xlAutomatic 
.Color = 65535 
.TintAndShade = 0 
End With 
Selection.FormatConditions(1).StopIfTrue = False 
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _ 
"=ISNUMBER(SEARCH(""Alexandria Real Estate Equities, Inc"",B1))" 
Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority 
With Selection.FormatConditions(1).Interior 
.PatternColorIndex = xlAutomatic 
.Color = 65535 
.TintAndShade = 0 
End With 
Selection.FormatConditions(1).StopIfTrue = False 

私はそれが私は単に条件と同じテストを確認することができないと言うことは言う:ここで潜水艦の1つの一部(各サブ約30条件付き書式を有し、約10サブルーチンがある)でありますほとんど300種類の異なるテストが存在するためです。

UPDATE:

私はジープが提案何試みたが、その後、私はすべての264点の条件を合わせるために、配列を持つ複数の潜水艦、それぞれの構築を下回るコメント何が、私はそのようにしたときにのみ強調表示最後の配列ではなく、すべての条件がで満たされているわけではありません。私は@Jeepedは、以下の提案と同じコードを使用しますが、配列内の24点の条件を入れて、私は11隻の潜水艦にそのコードができ、次のように私の主なコードが見えます:

Public Sub REIT() 
range("B:B").Select 
Call A25 
Call B25 
Call C25 
Call D25 
Call E25 
Call F25 
Call G25 
Call H25 
Call I25 
Call J25 
Call K25 
End Sub 

私はちょうど2つのヘルプを使用して終了しました列を使用して条件を再検索し、必要なデータを合計しますが、強調表示にはまだ問題があります。

+0

方法を、 trueの場合は1をセルに返し、それ以外の場合は0を返します。条件付き書式設定では、チェック列が1かどうかをチェックするだけです。 –

+0

CFを直接使用して行全体を色付けできます。条件付きロジックを使用して、数式で値を合計することができます。あなたがVBAでこれをしたいと思う何らかの理由はありますか?あなたのコードから判断すると、あなたはVBAにあまり経験はありません。 VBAに色付けをさせたい場合、条件付き書式は必要ありません。一方または両方を使用するのではなく、両方を使用してください。 – teylyn

+0

@ChrisMelville、すべての条件をチェックするのに十分な長さのUDFを作成するには、vbaについて十分にわかりません。 – Excellerator

答えて

1

ループを使用して配列を作成します。 With ... End With statementApplication.Selectionプロパティへの参照を処理できます。

Option Explicit 

Sub makeThreeCFrules() 
    Dim v As Long, vCFRs As Variant 

    vCFRs = Array("=ISNUMBER(SEARCH(""Acadia Realty Trust "", $B1))", vbYellow, _ 
        "=ISNUMBER(SEARCH(""Aimco "", $B1))", vbYellow, _ 
        "=ISNUMBER(SEARCH(""Alexandria Real Estate Equities, Inc"", $B1))", vbYellow) 
    With Selection.EntireRow 
     .FormatConditions.Delete 
     For v = LBound(vCFRs) To UBound(vCFRs) Step 2 
      With .FormatConditions.Add(Type:=xlExpression, Formula1:=vCFRs(v)) 
       .Interior.Color = vCFRs(v + 1) 
      End With 
     Next v 
    End With 
End Sub 

数式の問題は、$B1で列を固定する必要があることでした。

Alternate:

ワークブックにどこか他の検索語のリストを置くことができる場合は、1つの「逆のワイルドカード検索」でこれを実現することができます。 !Sheet6 A2で

enter image description here
検索条件:A4

Option Explicit 

Sub makeAllCFrules() 
    Dim v As Long, vCFRs As Variant 

    With Selection.EntireRow 
     .FormatConditions.Delete 
     With .FormatConditions.Add(Type:=xlExpression, _ 
       Formula1:="=SUMPRODUCT(--ISNUMBER(MATCH(""*""&Sheet6!$A$2:$A$4&""*"",$B1, 0)))") 
      .Interior.Color = vbYellow 
     End With 
    End With 
End Sub 

それは空白行が用語が範囲検索に含まれないことが非常に重要です。もしあれば、あなたは二重ワイルドカードを探しており、それにはすべてが含まれます。もちろん、提供されたサブプロシージャーを変更して、変更の対象となる検索語のアドレスを見つけることができます。条件付き書式ルールに

reverse_wildcard_results
B1を選択した後に適用される:あなたはすべてのさまざまな条件をチェックしたUDFを含む、(あなたが好きな場合は、非表示にすることができます)別のチェック欄を使用しておよそB99

+0

配列にあまりにも多くの行の連続があることを教えています。 275の条件があるので、複数の配列を構築するだけですか?または10の異なるサブシステムのように実行し、それらをパブリック・サブに呼び出すことができますか? – Excellerator

+0

私は複数の配列を実行しようとしましたが、それらのすべてを強調表示しませんでした。私が上記のことをしたとき、それはすべてのものではなく、最後のオプションの配列だけを強調表示したかのように見えます。どんな考え? – Excellerator

+0

私はそれを理解しました。 .FormatConditions.Delete行を削除するだけで済みますが、残りの行には条件付き書式設定が残ります。どのようにコードを編集してすべての配列が実行された後にしか真のフォーマットを削除しないようにするには?おかげでジープ! – Excellerator

関連する問題