darth-caedus-84
Goto Top

VBA 6.5 Countdown

Problem beim Einrichten eines Countdowns mit Visual Basic 6.5

Hallo zusammen

Ich bin wahrscheinlich zu dumm, um Visual Basic 6.5 zu prgrammieren.

Ich wollte eigentlich ganz einfach einen Countdown mit einer vorgegebenen Zeit definieren und dass dieser beginnt herunter zu zählen und die verfügbare Restzeit in einem Label ausgibt. Leider hat sich hier die Logik mit VBA 6.5 geändert. Habe schon rauf und runter gegoogelt, leider ohne Erfolgt. Hier nochmals das genaue Ziel:

Countdown mit fix definierter Zeit soll beim Aktivieren eines CommandButtons beginnen und die restliche Zeit in einem Label ausgeben. Schön wäre noch, wenn es möglich wäre bei der Ausgabe Stunden, Minuten und Sekunden anzuzeigen.

Gruss
Caedus

Content-Key: 161648

Url: https://administrator.de/contentid/161648

Ausgedruckt am: 28.03.2024 um 20:03 Uhr

Mitglied: bastla
bastla 27.02.2011 um 00:35:39 Uhr
Goto Top
Hallo Darth-Caedus-84!

Das könnte etwa so gehen:
Zeit = TimeSerial(3, 20, 0) '200 Minuten  
Ende = Now + Zeit
Pause = 1 / 87000 'etwas weniger als eine Sekunde  
Do
    Label1.Caption = FormatDateTime(Ende - Now, vbLongTime)
    Application.Wait Now + Pause
Loop Until Now >= Ende
Alternativen findest Du zB hier (wobei die Variante mit "WScript.Sleep" unter VBA nicht funktioniert) ...

Grüße
bastla
Mitglied: 76109
76109 27.02.2011 um 11:07:10 Uhr
Goto Top
Mitglied: Darth-Caedus-84
Darth-Caedus-84 27.02.2011 um 13:00:31 Uhr
Goto Top
Hey bastla

Supi, thx für die schnelle Antwort, es funktiert. Jedoch nocheine kurze Anschlussfrage. Wie muss ich das Ganze ergänzen, wenn ich möchte, dass ich während dem Countdown z. Bsp. andere CommandButtons normal betätigen kann? Dies geht ja bei der obgenannten Variante leider nicht.

Gruss
Caedus
Mitglied: bastla
bastla 27.02.2011 um 13:21:05 Uhr
Goto Top
Hallo Darth-Caedus-84!

Versuch es mit der API-Variante - dazu müsstest Du dann in der Schleife die Zeile 6 durch einen Aufruf von "Sleep" ersetzen ...

Grüße
bastla
Mitglied: 76109
76109 27.02.2011 um 13:24:07 Uhr
Goto Top
Hallo bastla!

Zitat von @bastla:
Versuch es mit der API-Variante - dazu müsstest Du
dann in der Schleife die Zeile 6 durch einen Aufruf von "Sleep" ersetzen ...
Das hatte ich schon versucht und funktioniert leider nicht (von daher obigen Kommentar entfernt)face-wink

@Darth-Caedus-84!

Andere Möglichkeit für Dein Vorhaben wäre z.B.

UserForm:
Private Sub CommandButton1_Click()
    Zeit = Now + TimeSerial(0, 1, 0) 'Std, Min, Sek  
    Call CountdownRefresh
End Sub

Modul:
Public Zeit As Date

Sub ShowUserForm()
    UserForm1.Show
End Sub

Sub CountdownRefresh()
    If Now > Zeit Then
        'Mach was oder auch nicht!  
    Else
        UserForm1.Label1.Caption = FormatDateTime(Zeit - Now, vbLongTime)
        Application.OnTime Time + 0.0000114, "CountdownRefresh"  
    End If
End Sub
Wobei das Contdown-Label praktisch im Hintergrund aktualisiert wird.

Gruß Dieter