Registriert seit: 22.06.2020
Version(en): Professional Plus 2019
Hallo, ich bin immer noch an meinem Projekt dran und komme von Tag zu Tag weiter, aber stoße dabei auf neue Probleme.
Dieses mal ist folgendes:
Per Startknopf möchte einen Countdown starten, der dann z.B. nach bestimmte Zeit mir eine makro ausführt. das habe ich bis jetzt so gelöst:
Application.OnTime Now + TimeValue("0:0:10"), "Not-aus"
Sub Not-aus() xxxxx xxxx End Sub
Funktioniert einwandfrei. Jetzt aber möchte ich 2 Sachen ändern:
1) ich möchte das, wenn ich auf den Startknopf nochmal drücke => soll die Zeit(countdown) zurückgesetzt werden. So das ich die Zeit immer wieder per Knopdruck wieder setzten kann?
2) wenn die Zeit doch abgelaufen ist, soll eine WENN abfrage kommen bevor eine Makro ausgeführt wird, z.B. - Zeit läuft ab => Abfrage nach Wert in der Zeile F15 => wenn der Wert in der Zeile F15 kleiner ist als 50, dann soll meine Makro "Not-aus" ausgeführt werden, wenn das aber gleich oder größer 50 ist, dann soll z.B. eine Nachricht kommen durch MsgBox oder eine anderemakro ausgeführt werden.
Bin für jede Hilfe sehr Dankbar.
MfG Andre
Registriert seit: 12.06.2020
Version(en): 2024, 365business
Registriert seit: 22.06.2020
Version(en): Professional Plus 2019
03.08.2020, 10:34
(Dieser Beitrag wurde zuletzt bearbeitet: 03.08.2020, 11:05 von WillWissen.
Bearbeitungsgrund: Schriftgröße
)
(02.08.2020, 11:40)ralf_b schrieb: http://www.office-loesung.de/ftopic356109_0_0_asc.php Hallo, ich komme nicht ganz klar: _____________________________________________ Option ExplicitPrivate ldtmTimer As DatePublic Sub Timer_On() ldtmTimer = Time + TimeSerial(0, 0, 5) Application.OnTime ldtmTimer, "Timer_Prozedur"font=Courier,]End Sub[/font]Public Sub Timer_Off() Application.OnTime ldtmTimer, "Timer_Prozedur", , FalseEnd SubPublic Sub Timer_Prozedur() BeepEnd Sub____________________________________________________________ Wenn ich richtig verstanden habe kann ich mit Timer_On die Zeit starten und bevor die Zeit abläuft mit "Timer_Off" die Zeit stoppen, damit die "Timer_Prozedur" nicht ausgeführt wird.
Aber ich möchte, dass ich den Timer immer wieder zurücksetzen kann und nicht stoppen. Es soll eine Überbrückung-Knopf geben => ich drucke drauf und die Zeit läuft und mit dem nächsten klick tue ich die Überbrückung wieder neu setzen.. Und wenn die Zeit abläuft, dann erst folgt die WENN abfrage und die bestimmte makro/Funktion wird ausgeführtIch hoffe und bitte um euro Hilfe, habe schon Stunden im Internet verbracht um passende(oder verständliche Makro) zu finden, aber leider meine makro Kenntnisse sind nicht so hoch, dass ich jetzt selber einen baue Deswegen bin ich für jede Hilfe dankbar.MfGAndre
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Andre, Option Explicit
Private ldtmTimer As Date
Public Sub Timer_On() Timer_Off ldtmTimer = Time + TimeSerial(0, 0, 5) Application.OnTime ldtmTimer, "Timer_Prozedur" End Sub
Public Sub Timer_Off() On Error Resume Next Application.OnTime ldtmTimer, "Timer_Prozedur", , False On Error GoTo 0 End Sub
Public Sub Timer_Prozedur() If ActiveSheet.Range("F15").Value < 50 Then MsgBox "<50" Else MsgBox ">=50" End If End Sub Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• Andrek
Registriert seit: 22.06.2020
Version(en): Professional Plus 2019
Hallo Uwe, Vielen herzlichen Dank! :23: Eine Kleinigkeit habe ich noch - wie kann ich die Countdown Zeit anzeigen lassen? Ich habe im Netz folgende einfache Makro gefunden: Sub Time()Range("A1")="c2-c12TimerEnd Sub.............Dort wird die restliche Zeit(C2-C12) in der Zelle A1 angezeigt.. aber da ich keine Start- und Endzeit habe, kann ich so was schlecht verwenden?! :91:LG Andre
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Andre, so vielleicht: Option Explicit
Private ldtmTimer As Date
Public Sub Timer_On() Timer_Off ldtmTimer = Now + TimeSerial(0, 0, 19) Application.OnTime ldtmTimer, "Timer_Prozedur" End Sub
Public Sub Timer_Off() ldtmTimer = 0 On Error Resume Next Application.OnTime ldtmTimer, "Timer_Prozedur", , False On Error GoTo 0 End Sub
Public Sub Timer_Prozedur() If ActiveSheet.Range("F15").Value < 50 Then MsgBox "<50" Else MsgBox ">=50" End If End Sub
Sub AnzeigeRestzeit() With Range("A1") .NumberFormat = "General" .Value = Fix(Application.Min(0, Now - ldtmTimer) * -86400) End With End Sub Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• Andrek
Registriert seit: 22.06.2020
Version(en): Professional Plus 2019
Uwe, vielen Dank noch mal.
Es funktioniert nicht ganz wie gedacht, die Restzeit wird so LIVE(mit zurückzählen ) nicht angezeigt.
Ich habe 2 Button erstellt, womit ich dann die Restlaufzeit abfrage, dann zeigt er mir in der Zelle A1 die Restlaufzeit.
Meine Gedanke war, das sobald ich Countdown starte mir gleich die Restlaufzeit angezeigt wird => die Zeit wird zurückgezählt, so das man immer sieht wie viel noch Zeit übrig bleibt
LG Andre
Registriert seit: 22.06.2020
Version(en): Professional Plus 2019
03.08.2020, 18:55
(Dieser Beitrag wurde zuletzt bearbeitet: 03.08.2020, 21:03 von WillWissen.
Bearbeitungsgrund: Unnötiges Vollzitat entfernt
)
Was mir jetzt noch aufgefallen ist, dass wenn ich den Countdown nochmal rücksetze => dann wird 2-te countdown gesetzt, so das ich am Ende 2 mal(mit Abstand) mein Nachricht(MsgBox) bekomme. es heißt, dass ich jedes mal neue Countdown setzte, aber ich möchte das meine laufende Countdown zurückgesetzt wird, so das ich tatsächlich zum Schluss nur eine Nachricht(Makro) bekomme
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Andre, Option Explicit
Private ldtmTimer As Date
Public Sub Timer_On() Timer_Off ldtmTimer = Now + TimeSerial(0, 0, 15) AnzeigeRestzeit Application.OnTime ldtmTimer, "Timer_Prozedur" End Sub
Public Sub Timer_Off() On Error Resume Next Application.OnTime ldtmTimer, "Timer_Prozedur", , False On Error GoTo 0 ldtmTimer = 0 AnzeigeRestzeit bolStopp:=True End Sub
Public Sub Timer_Prozedur() Timer_Off If ActiveSheet.Range("F15").Value < 50 Then MsgBox "<50" Else MsgBox ">=50" End If End Sub
Sub AnzeigeRestzeit(Optional bolStopp As Boolean) Static datNextTime As Date If Not bolStopp Then With Range("A1") '.NumberFormat = "General" .Value = Application.RoundUp(Application.Min(0, Now - ldtmTimer) * -86400, 0) End With datNextTime = Now + TimeSerial(0, 0, 1) Application.OnTime datNextTime, "AnzeigeRestzeit", , True Else On Error Resume Next Application.OnTime datNextTime, "AnzeigeRestzeit", , False On Error GoTo 0 datNextTime = 0 End If End Sub Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• Andrek
Registriert seit: 22.06.2020
Version(en): Professional Plus 2019
Hallo Uwe, ich bin dir sehr dankbar! Ich habe endlich mal soweit alles hingekriegt, 100 verschiedene WENN und ABER abfrage usw.. :42: :19: eine Sache möchte ich noch Fragen: Die Countdown-Zeit läuft so ab: wenn ich 1min 30sec(0,1,30), dann wird meine Zeit als 90 runtergezählt. Ich habe schon probiert die Zelle zu formatieren, aber wenn ich als Formatierung Zeit auswähle funktioniert trotzdem nicht.. Ist bin schon froh das es so funktioniert, aber wenn ich das so: 01:30 hinkriege - sieht dann schöner aus Vielen, vielen dank noch mal! VG Andre
|