2017-04-27 19 views
0

私は何が起こっているのかねえ。私はシステム内の期日を追跡しており、それらはスプレッドシートの一部です。それ以上の場合(シート内の条件付き書式設定)、カウントダウンが設定されている場合は、60日を赤色にすると黄色になります。 = COUNTIF(I3:I02、 "> =" &今日(+60) = COUNTIF(I3:I102、「< =」& TODAY())延滞Visual Basic Excelの条件式

私は何かがフラグを立てたり、その後、以下の式にそれらをプッシュしていないかどうかを示すために、これらのカウントを使用します。私が今しようとしているのは、実際にシートのタブが色が変わるかどうかに基づいて色を変えることです。

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.Address = "$B$1" Then 
     Select Case Target.Value 
     Case Is > 0 
      Me.Tab.Color = vbRed 
     End Select 
    ElseIf Target.Address = "$B$2" Then 
     Select Case Target.Value 
     Case Is > 0 
      Me.Tab.Color = vbYellow 
     End Select 
    Else 
     Me.Tab.Color = vbGreen 
    End If 
End Sub 

これは、タブの色を変更する限り動作しますが、私はB2の値を変更しても、それは赤いフラグを削除した後ですか?私。一方は他方を上書きする。赤いものがあれば赤くしておく必要があります。基本的には、if文が真であれば、b2..etcの値のチェックに進まなければ、それを止めたい。あなたがやりたいように見える何

答えて

0

はB1やB2のいずれかが変更された場合、B1とB2の値をチェックします:

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Range("B1").Value > 0 Then 
     Me.Tab.Color = vbRed 
    ElseIf Range("B2").Value > 0 Then 
     Me.Tab.Color = vbYellow 
    Else 
     Me.Tab.Color = vbGreen 
    End If 
End Sub 

あなたの質問に基づいて、B1とB2は、数式が含まれているように、それが鳴ります。そのため、別の番号を計算したときにイベントが発生することはありません。したがって、Targetの位置に関するテストは含まれていません。セルが(手動で)変更されると、コードは実行されます。

関連する問題