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

Printed on: April 24, 2024 at 03:04 o'clock

Member: bastla
bastla Feb 26, 2011 at 23:35:39 (UTC)
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 Feb 27, 2011 at 10:07:10 (UTC)
Goto Top
Member: Darth-Caedus-84
Darth-Caedus-84 Feb 27, 2011 at 12:00:31 (UTC)
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
Member: bastla
bastla Feb 27, 2011 at 12:21:05 (UTC)
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 Feb 27, 2011 at 12:24:07 (UTC)
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