Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Counter als Userform beim starten

Forumthread: Counter als Userform beim starten

Counter als Userform beim starten
13.08.2013 16:38:49
mikey

Hallo
ich würde gerne eine userform in vollbild beim starten meines Excel files erstellen.
Den code dazu habe ich schon gefunden. Die beispiel datei habe ich auch hochgeladen.
Möchte keine Abfragen und das es nicht möglich ist die Userform mit x oben zu schließen oder abzubrechen.
Vielleicht könnt ihr mir da weiterhelfen.
https://www.herber.de/bbs/user/86836.xlsm
'In DieseArbeitsmappe
Option Explicit
Private Sub Workbook_Open()
Application.Visible = False
UserForm1.Show
End Sub

'---------------------------------------------------
'---------------------------------------------------
'In ein Modul
Option Explicit
Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Public Const SM_CXSCREEN = 0
Public Const SM_CYSCREEN = 1
'---------------------------------------------------
'---------------------------------------------------
'In Dekleration der Userform
Private Sub UserForm_Initialize()
Me.Left = 0
Me.Top = 0
Me.Height = GetSystemMetrics(SM_CYSCREEN) * 0.75
Me.Width = GetSystemMetrics(SM_CXSCREEN) * 0.75
End Sub

Nur beim Counter bin ich restlos überfordert.
Ich möchte einfach das die Userform erscheint und dort von 30 Sekunden rückgezählt wird.
Dann schließt sich die Userform automatisch, man sollte sie nicht abbrechen können.
anbei der code den ich gefunden habe.
Option Explicit
Dim i As Date
Dim lngZaehler As Long
Dim Erledigt As Double
Dim zeit1, zeit2, zeit3 As Date
Dim Rundung, Ingtext As String
Dim IngZeit As Date
Dim IngAnzahl%, h%, IngStart%
Sub Start()
UserForm1.Label1.Width = 0
UserForm1.Show
End Sub
Sub CountDown()
Sheets("Tabelle1").Select
If h = 0 Then
IngZeit = InputBox("Bitte Länge des Countdowns eintragen!" & Chr(10) & "Standartwert entsricht 15 Minuten.", "Bitte Länge im Format eingeben", "00:15:00")
IngAnzahl = InputBox("Wie oft soll der Countdown laufen?" & Chr(10) & "Standartwert entspricht 2 Durchläufe.", "Bitte nur ganze Zahlen", "2") + 1
Ingtext = "Möchten Sie abbrechen?" & Chr(10) & "Ihre Einstellungen:" & Chr(10) & IngAnzahl - 1 & " Durchläufe á " & IngZeit & " Stunden."
If MsgBox(Ingtext, vbYesNo) = vbYes Then
Exit Sub
End If
End If
zeit1 = Time
zeit2 = zeit1 + IngZeit
If h 0 Then
IngAnzahl = h
End If
For h = IngAnzahl To 1 Step -1
If h = 1 Then
Exit Sub
ElseIf h >= 2 And UserForm1.Visible = False Then
UserForm1.Show
End If
For i = zeit1 To zeit2 Step ("00:00:01")
zeit3 = -(TimeValue(i) - TimeValue(zeit2))
lngZaehler = lngZaehler + 1
Erledigt = (zeit2 - i) / (zeit2 - zeit1)
UserForm1.Label2.Caption = "Die Zeit läuft!" & Chr(10) & " Restzeit: " & zeit3
With UserForm1
If .Caption Format(Erledigt, "0%") Then
.Caption = Format(Erledigt, "0%") & " der Zeit übrig!"
.Label1.Width = Erledigt * (.Frame1.Width - 10)
End If
End With
If i > Time Then
Application.Wait (i)
End If
DoEvents
Next
Unload UserForm1
UserForm1.Hide
Next
h = 0
'***hier kann man weitere Funktionen einbauen nach dem Ablauf des Timers!***
End Sub

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Counter als Userform beim starten
13.08.2013 17:00:51
Balder
Hey Mikey,
um eine Userform nicht über x zu schließen:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
Cancel = 1
End If
End Sub

um Userform nach Zeit (30 Sekunden) zu schließen:

Sub CountDown()
Application.Wait Now + TimeSerial(0, 0, 30)
Unload UserForm1
End Sub

...alles andere in der Datei kannst du entfernen. Dann nur noch dein Workbook_Open und Userform_Initialize hinzufügen; fertig.
Gruß
Balder

Anzeige
AW: Counter als Userform beim starten
13.08.2013 17:49:59
Matze
Hi mikey,
Im Diese Arbeitsmappe das starten der UF anlegen
In der UF wenn diese aufgerufen wird die Zeit eingeben,
und über ein Makro diese Beenden.
https://www.herber.de/bbs/user/86838.xlsm
Matze
war das so gemeint?

Anzeige
AW: Counter als Userform beim starten
14.08.2013 14:12:08
mikey
hallo
danke für die rasche antwort, ja ich möchte gerne diese Userform in vollbild mit meinem Excel File mitstarten. Es soll jedoch automatisch ohne Eingabe ablaufen, d.h. Es soll gleich am Anfang ein Counter mit 30 Sekunden erscheinen der rückwärts zählt ohne das ich was eingeben muss und nach 30 sekunden
soll sich die userform wieder schließen ohne das ich es vorher beenden kann.
könnt ihr mir dabei bitte helfen, ich weiß leider nicht so genau wie ich den code anpassen kann.

Anzeige
AW: Counter als Userform beim starten
15.08.2013 16:06:25
mikey
hallo
kann mir jemand dabei helfen das ich die eingabe prozedur aus dem makro code löschen kann,
damit das makro ohne eingabe der daten von alleine beim starten von excel startet
danke

AW: Counter als Userform beim starten
15.08.2013 18:54:27
Matze
Hi Mikey,
der Durchlauf geht nur 1 mal
https://www.herber.de/bbs/user/86871.xlsm
Matze
Ps.:Wenn du weitere Fragen hast, dann mach dort wo du auch den Beitrag schreibst einen Haken in das
kleine Kästchen , gleich neben Passwort! Dann wird der Beitrag als "offen" gekennzeichnet und Jeder kann den dann sehen.

Anzeige
AW: Counter als Userform beim starten
15.08.2013 22:40:36
mikey
Hallo
super danke für das File, habe es schon ein wenig an meine bedürfnisse angepasst.
Leider startet die Userform nicht komplett über den Bildschirm, d.h. es ist noch ein kleiner
spalt zwischen richtigen Excel file und der Useroform wenn man mit der Maustaste daraufklickt
kann man die Userform sogar wegziehen, das möchte ich aber bitte verhindern.
Hast du vielleicht einen Tipp für mich, wie ich das anstellen kann.
https://www.herber.de/bbs/user/86873.xlsm

Anzeige
AW: Counter als Userform beim starten
16.08.2013 13:59:45
mikey
hallo
danke für das beispiel, leider kann ich es nicht starten es kommt sofort die fehlermeldung
Laufzeitfehler 104
Die Methode "On Time" für das Objekt _ Application ist fehlgeschlagen.
Wenn ich nun auf depuggen klicke wird mir in dieser Arbeitsmappe die Userform1.show gelb hinterlegt.
lg

Anzeige
AW: Counter als Userform beim starten
17.08.2013 17:08:55
Matze
Hi mikey,
teste dies nun einmal, bei mir läuft das unter 2010.
Ich bin kein VBA Profi, da gibt es bestimmt was zu verbessern,
https://www.herber.de/bbs/user/86895.xlsm
Matze
;
Anzeige
Anzeige

Infobox / Tutorial

Userform mit Countdown in Excel erstellen


Schritt-für-Schritt-Anleitung

Um eine Userform mit einem Countdown in Excel zu erstellen, folge diesen Schritten:

  1. Userform erstellen:

    • Öffne den VBA-Editor (Alt + F11).
    • Füge eine neue Userform hinzu (Rechtsklick auf "VBAProject" > "Einfügen" > "UserForm").
    • Füge zwei Labels hinzu: eines für die Countdown-Anzeige und eines für den Fortschritt.
  2. Code für das Öffnen der Userform:

    • Füge den folgenden Code in das Modul "DieseArbeitsmappe" ein, um die Userform beim Öffnen der Datei anzuzeigen:
    Private Sub Workbook_Open()
       Application.Visible = False
       UserForm1.Show
    End Sub
  3. Userform anpassen:

    • Stelle sicher, dass die Userform die volle Bildschirmgröße einnimmt. Füge diesen Code in die Initialisierungsroutine der Userform ein:
    Private Sub UserForm_Initialize()
       Me.Left = 0
       Me.Top = 0
       Me.Height = Application.Height
       Me.Width = Application.Width
    End Sub
  4. Countdown erstellen:

    • Füge den folgenden Code in ein Modul ein, um einen 30-sekündigen Countdown zu erstellen:
    Dim lngZaehler As Long
    
    Sub CountDown()
       Dim i As Integer
       For i = 30 To 1 Step -1
           UserForm1.Label1.Caption = "Restzeit: " & i & " Sekunden"
           DoEvents
           Application.Wait (Now + TimeValue("00:00:01"))
       Next i
       Unload UserForm1
    End Sub
  5. Countdown starten:

    • Rufe die CountDown-Subroutine auf, wenn die Userform angezeigt wird:
    Private Sub UserForm_Activate()
       Call CountDown
    End Sub

Häufige Fehler und Lösungen

  • Laufzeitfehler 104: Dieser Fehler kann auftreten, wenn der Application.Wait-Befehl nicht funktioniert. Stelle sicher, dass dein Excel nicht im Hintergrund läuft.
  • Userform kann geschlossen werden: Um die Userform zu verhindern, dass sie über das "x" geschlossen wird, füge folgenden Code in die Userform ein:

    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
      If CloseMode = vbFormControlMenu Then
          Cancel = True
      End If
    End Sub

Alternative Methoden

Wenn du eine andere Methode zur Erstellung eines Countdowns bevorzugst, kannst du auch einen Timer verwenden. Dies ist eine Option, wenn du den VBA Timer einbauen möchtest. Hier ist ein einfaches Beispiel:

Sub StartTimer()
    Dim startTime As Double
    startTime = Timer
    Do While Timer < startTime + 30
        UserForm1.Label1.Caption = "Restzeit: " & Format(startTime + 30 - Timer, "0") & " Sekunden"
        DoEvents
    Loop
    Unload UserForm1
End Sub

Praktische Beispiele

Hier sind einige praktische Beispiele, wie der VBA Countdown in unterschiedlichen Szenarien verwendet werden kann:

  • Timer für Präsentationen: Du kannst den Countdown nutzen, um eine Zeit für Diskussionen bei Präsentationen zu setzen.
  • Pausen-Timer: Verwende den Timer, um Pausenzeiten während der Arbeit zu überwachen.

Tipps für Profis

  • Nutze die Eigenschaften der Userform, um das Design zu verbessern. Füge z.B. Bilder oder Farben hinzu, um die Userform ansprechender zu gestalten.
  • Prüfe, ob alle Variablen korrekt deklariert sind, um Laufzeitfehler zu vermeiden.
  • Experimentiere mit verschiedenen Zeitintervallen, um den Excel Timer nach deinen Bedürfnissen anzupassen.

FAQ: Häufige Fragen

1. Wie kann ich die Userform ohne Eingaben starten?
Durch das Anpassen des Codes in Workbook_Open kannst du die Userform automatisch anzeigen lassen, ohne dass der Benutzer Eingaben tätigen muss.

2. Kann ich die Dauer des Countdowns ändern?
Ja, du kannst die Zahl in der For-Schleife im CountDown-Sub ändern, um die gewünschte Zeitperiode festzulegen.

3. Funktioniert das auch in Excel 2010?
Ja, der oben beschriebene Code funktioniert in Excel 2010 und neueren Versionen. Stelle sicher, dass die Makros aktiviert sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige