Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Coundown zeit zurücksetzten + WENN Abfrage
#1
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
Antwortento top
#2
http://www.office-loesung.de/ftopic356109_0_0_asc.php
Antwortento top
#3
(02.08.2020, 10:40)ralf_b schrieb: http://www.office-loesung.de/ftopic356109_0_0_asc.php
Hallo,

ich komme nicht ganz klar:

_____________________________________________
Option Explicit

Private ldtmTimer As Date

Public 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", , False
End Sub

Public Sub Timer_Prozedur()
    Beep
End 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ührt


Ich 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  Confused

Deswegen bin ich für jede Hilfe dankbar.

MfG
Andre
Antwortento top
#4
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 Benutzer sagt Danke an Kuwer für diesen Beitrag:
  • Andrek
Antwortento top
#5
Hallo Uwe,

Vielen herzlichen Dank!  23

Eine Kleinigkeit habe ich noch  Angel

    - wie kann ich die Countdown Zeit anzeigen lassen?

Ich habe im Netz folgende einfache Makro gefunden:

Sub Time()
Range("A1")="c2-c12
Timer
End 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
Antwortento top
#6
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 Benutzer sagt Danke an Kuwer für diesen Beitrag:
  • Andrek
Antwortento top
#7
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
Antwortento top
#8
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   Huh
Antwortento top
#9
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 Benutzer sagt Danke an Kuwer für diesen Beitrag:
  • Andrek
Antwortento top
#10
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  Huh Angel

Vielen, vielen dank noch mal!

VG
Andre
Antwortento top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste