Ich bin derzeit in der Lage, den Bereich eines ActiveX-Spinner ("Device1") basierend auf dem aktuellen Datum und Uhrzeit zu ändern. Zeit, die die Zeilennummer und das Datum bestimmt, die die Spaltennummer bestimmen. Zellen (B3: H3) geben Daten mit der Today() -Funktion zurück und Cell (A3) gibt die aktuelle Zeit alle 10 Sekunden zurück. Ich habe die Offset() - Funktion verwendet, aber ich merke jetzt, dass der Drehfeldwert jedes Mal auf 0 zurückgesetzt werden muss, wenn sich die Variable fDate oder fTime geändert hat. Dies sind die Subs, mit denen ich gerade arbeite. Idealerweise würde ich gerne Sub SpinnerReset() nur aufrufen können, wenn fDate und fTime sich von ihren vorherigen Werten geändert haben, um zu vermeiden, dass der Wert alle 10 Sekunden zurückgesetzt wird.Ausführen von Makros mit einer Änderung an einer Variablen
Vielleicht eine Möglichkeit, vorherige Werte beizubehalten und zu vergleichen, wenn nicht gleich? Ich bin mir nicht sicher, ob das möglich ist.
Sub Device1_Change()
Dim fDate, fTime As Integer
'Change fDate based on day'
If Range("B3") = Date Then fDate = 0
If Range("C3") = Date Then fDate = 16
If Range("D3") = Date Then fDate = 32
If Range("E3") = Date Then fDate = 48
If Range("F3") = Date Then fDate = 64
If Range("G3") = Date Then fDate = 80
If Range("H3") = Date Then fDate = 96
'Change fTime based on TimeStamp'
If Range("A3") > TimeValue("09:59:59") And Range("A3") < TimeValue("11:00:00") Then fTime = 0
If Range("A3") > TimeValue("10:59:59") And Range("A3") < TimeValue("12:00:00") Then fTime = 1
If Range("A3") > TimeValue("11:59:59") And Range("A3") < TimeValue("13:00:00") Then fTime = 2
If Range("A3") > TimeValue("12:59:59") And Range("A3") < TimeValue("14:00:00") Then fTime = 3
If Range("A3") > TimeValue("13:59:59") And Range("A3") < TimeValue("15:00:00") Then fTime = 4
If Range("A3") > TimeValue("14:59:59") And Range("A3") < TimeValue("16:00:00") Then fTime = 5
If Range("A3") > TimeValue("15:59:59") And Range("A3") < TimeValue("17:00:00") Then fTime = 6
If Range("A3") > TimeValue("16:59:59") And Range("A3") < TimeValue("18:00:00") Then fTime = 7
If Range("A3") > TimeValue("17:59:59") And Range("A3") < TimeValue("19:00:00") Then fTime = 8
If Range("A3") > TimeValue("18:59:59") And Range("A3") < TimeValue("20:00:00") Then fTime = 9
If Range("A3") > TimeValue("19:59:59") And Range("A3") < TimeValue("21:00:00") Then fTime = 10
If Range("A3") > TimeValue("20:59:59") And Range("A3") < TimeValue("22:00:00") Then fTime = 11
If Range("A3") > TimeValue("21:59:59") And Range("A3") < TimeValue("23:00:00") Then fTime = 12
'Select cell for spinner'
Worksheets("Count").Range("C4").Offset(fTime, fDate).Value = Device1.Value
End Sub
Sub SpinnerReset()
Device1.Value = 0
End Sub
Woher wissen Sie, wann 'fDate' oder' fTime' sich geändert hat? Möchten Sie sehen, ob sich eine Zelle in "B3: H3" ändert und "fDate" aktualisiert? – BruceWayne
Das aktuelle Format mit fDate und fTime funktioniert einwandfrei. Die Zelle, die vom Spinner beeinflusst wird, ändert sich mit der Aktualisierung auf die aktuelle Uhrzeit und das aktuelle Datum, aber das Hauptproblem ist, dass sobald eine neue Zelle ausgeführt wird, der Spinner immer noch den vorherigen Wert trägt. Ich möchte, dass der Wert des Drehfelds zurückgesetzt wird, sobald sich die Zelle geändert hat. Wenn Sie ein einfacheres Format kennen, um die betroffene Zelle zu ändern, bin ich offen für Ideen. – AvidAdventurer
Welche Zellen ändern sich und wenn sie sich ändern, möchten Sie, dass das Makro erneut ausgeführt wird? – BruceWayne