2017-05-16 16 views
0

を定義しました。セルE4の値は、他の2つのセルの結果です。時々これらの細胞の1つが変化する。私は "AALB_Exposure"のような20以上の定義された範囲を持っているので、私はモジュールを使うことを好みます。条件付き書式は、私は次のコードを持っている範囲

問題:このモジュールでは、すべての値がカラーになります。 AALB_Exposureに空白のセルがあることがあります。私はこれが起こらないことを確認したいと思います。これは可能ですか? さらに、このモジュールは静的であり、E4を調整するときに定義された範囲内のセルの色を変更しません。これは、モジュールを実行した後にのみ発生します。 E4の値を変えることによって、細胞の色がすぐに調整されることを保証することは可能ですか?

ありがとうございました!

は-----編集------

ブルース・ウェインの優れた提案をした後、私は私のコードを少し変更しました。名前付き範囲として

Private Sub Workbook_SheetCalculate(ByVal Target As Range, ByVal Sh As Worksheet) 
If Target.Address = "$A$9" Then      
Application.ScreenUpdating = False  
Dim x As Range, Cell As Range 
Set x = Sh.Range("P1:P150,AD1:AD150,AR1:AR150,BF1:BF150,BT1:BT150,CH1:CH150,CV1:CV150,DJ1:DJ150,DX1:DX150,EL1:EL150")             
For Each Cell In x 
If Cell.Value > Sh.Range("A9").Value And Cell.Value <> "" Then 
    Cell.Interior.Color = RGB(0, 255, 0) 
End If 
Next 
End If 
Application.ScreenUpdating = True 

End Subの

、問題をこのように対処するかもしれない方が良い、常に各シートで同じですか?したがって、シート全体の同じ位置に常にあるセルの概要シートにあるセルE4を変更しました。 ただし、この新しいモジュールは正しいですか?

答えて

0

あなたはE4が変更されるたびにこれが実行したい場合は、ワークシートのChangeイベントでそれを配置する必要があります。

シートの ワークシートモジュールにあなたがそれを実行することを入れ
Private Sub Worksheet_Change(ByVal Target As Range) 
If Target.Address = "$E$4" Then 
Application.ScreenUpdating = False 
Dim x As Range, Cell As Range 

Set x = Range("AALB_Exposure") 

For Each Cell In x 
    If Cell.Value > Sheets("Overview").Range("E4").Value And Cell.Value <> "" Then ' added `AND` part to check if cell is not blank 
     Cell.Interior.Color = RGB(0, 255, 0) 
    End If 
Next 

End If 
Application.ScreenUpdating = True 
End Sub 

。また、色を追加する前にセルが空白かどうかを確認します。

関連する問題