Hallo Tim
Für mich gibt es 2 Möglichkeiten (die 2. in der 2. Antwort)
1.
Das ist die nicht ganz so elegante Lösung, da einfach ein Timer gestartet wird, der alle Sekunde aufgrufen wird.
Das heißt jede Sekunde wird der Code durchlaufen und entsprechend die Zelle gefärbt.
(der Code ist auch nicht 100% sauber, sollte aber so laufen)
Voraussetzung:
Es muss eine Checkbox (Name CheckBox1) auf dem 1. Blatt vorhanden sein.
Derzeit wird die Zelle B4 abgefragt, kann man aber im "Start" Makro ändern
In VBA unter "DieseArbeismappe" folgenden Code einfügen
Private Sub Workbook_Open()
Start
End Sub
Im Code-Fenster vom 1. Blatt dann diesen Code
Option Explicit
Private Sub CheckBox1_Click()
If CheckBox1.Value = 0 Then
Alarm.Interior.Pattern = xlNone
Else
Start
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Start
If Not Intersect(Target, Alarm) Is Nothing Then
Me.CheckBox1.Value = 1
End If
End Sub
Und in einem Modul dann
Option Explicit
Public WarnFarbe As Long
Public AlarmFarbe As Long
Public Alarm As Range
Public Sub Timer()
'Stop
If Sheets(1).CheckBox1.Value Then
If DateDiff("h", Time, Alarm) < 1 And DateDiff("s", Time, Alarm) > 0 Then
Alarm.Interior.Color = WarnFarbe
ElseIf DateDiff("s", Time, Alarm) < 0 Then
If Alarm.Interior.Color = AlarmFarbe Then
Alarm.Interior.Pattern = xlNone
Else
Alarm.Interior.Color = AlarmFarbe
End If
Else
Alarm.Interior.Pattern = xlNone
End If
Application.OnTime Now + TimeSerial(0, 0, 1), "Timer"
Else
' Stop
End If
End Sub
Public Sub Start()
WarnFarbe = RGB(256, 256, 0)
AlarmFarbe = RGB(256, 0, 0)
Set Alarm = Sheets(1).Range("B4")
Application.OnTime Now + TimeSerial(0, 0, 1), "Timer"
End Sub
|