Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zeit stoppen und X Sekunden warten

Zeit stoppen und X Sekunden warten
09.06.2007 20:09:00
Mathias
Hallo,
in meinem Excelprojekt möchte ich beim Schließen ein bestimmtes Tabellenblatt für *mindestens* z.B. 5 Sekunden anzeigen lassen, während die Datei gespeichert wird.
Falls das Speichern länger dauert als 5 Sekunden, dürfte die Wartezeit aber nicht mehr addiert werden. Das ganze müßte also in etwa so aussehen:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
AktuelleZeitStoppen  ' Aktuelle Zeit feststellen und in Variable speichern
Dateispeichern
Warten 5    ' Prozedur wartet max 5 Sekunden nach AktuelleZeitStoppen
End Sub


Hat jemand sowas schonmal realisiert? Vielen Dank schonmal.
Viele Grüße
Mathias

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeit stoppen und X Sekunden warten
09.06.2007 20:20:00
Hajo_Zi
Hallo Matthias,
so ganz klar ist mir nicht was Du Anzeigen lassen willst.
Ich vermute mal Du kannst das über einer UserForm realisieren.
UserForm nach zeit schließen Sekunden

Sub Start()
Application.OnTime Now + TimeValue("00:00:02"), "Schließen"
UserForm1.Show
End Sub
Sub Schließen()
Unload UserForm1
End Sub
oder
Private Sub UserForm_Activate()
Application.Wait Now + TimeSerial(0, 0, 2)
Unload Me
End Sub


Gruß Hajo

Anzeige
AW: Zeit stoppen und X Sekunden warten
09.06.2007 20:21:10
Daniel
Hallo
so:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Zeit As Single
Sheets("Tabelle1").Select
Zeit = Timer
Me.Save
Do Until Timer > Zeit + 5
Loop
End Sub


allerdings ist schließen ohne Speichern nicht mehr möglich.
Gruß, Daniel

Anzeige
ERLEDIGT: Zeit stoppen und X Sekunden warten
09.06.2007 20:50:00
Mathias
Hallo Hajo und Daniel,
vielen vielen Dank für eure Tipps!!! :-)
Habe die Lösung von Daniel eingebaut.
Das Ganze sieht bei mir jetzt wie folgt aus:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim frage As Integer
Dim Zeit As Single
frage = MsgBox("Änderungen speichern?", vbYesNo)
Zeit = Timer  ' Zeit stoppen für 5 Sekunden Wartezeit
If frage  7 Then
ActiveWorkbook.Save
End If
Me.Saved = True
Do Until Timer > Zeit + 5   ' max. 5 Sekunden warten
Loop
End Sub


Dabei kann man dann auch noch entscheiden, ob man speichern möchte oder nicht.
Viele Grüße
Mathias

Anzeige
AW: ERLEDIGT: Zeit stoppen und X Sekunden warten
10.06.2007 00:15:29
Dirk
Hallo Mathias,
deine ursprüngliche Frage:

in meinem Excelprojekt möchte ich beim Schließen ein bestimmtes Tabellenblatt für *mindestens* z.B. 5 Sekunden anzeigen lassen, während die Datei gespeichert wird.


weckte auch mein Interesse.
Aber an welcher Stelle deines zuletzt geposteten Codes nimmst du darauf Bezug?
Zwar bin ich absoluter VBA-Laie, aber so wie ich diesen Code interpretiere, wird beim Speichern nicht etwa nochmals ein anderes Blatt aufgerufen - so wie vorgesehen...
MfG Dirk N.

Anzeige
AW: ERLEDIGT: Zeit stoppen und X Sekunden warten
10.06.2007 11:09:01
Mathias
Hallo Dirk,
der Wechsel auf ein anderes Tabellenblatt findet schon vorher statt mit
Worksheets("BlattXY").Activate
Eine andere Excel-Datei wird dabei aber nicht aufgerufen.
Für mich war im wesentlichen der Code für die 5 Sekunden Wartezeit entscheidend.
Viele Grüße
Mathias
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zeit stoppen und für X Sekunden warten in Excel


Schritt-für-Schritt-Anleitung

Um in Excel eine Wartezeit von bis zu 5 Sekunden zu implementieren, während ein bestimmtes Tabellenblatt angezeigt wird, kannst du den folgenden VBA-Code nutzen:

  1. Öffne den Visual Basic for Applications (VBA) Editor mit ALT + F11.
  2. Wähle im Projektfenster das entsprechende Workbook aus.
  3. Doppelklicke auf ThisWorkbook, um das Codefenster zu öffnen.
  4. Füge den nachstehenden Code ein:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim frage As Integer
    Dim Zeit As Single
    frage = MsgBox("Änderungen speichern?", vbYesNo)
    Zeit = Timer  ' Aktuelle Zeit mit Sekunden erfassen
    If frage = vbYes Then
        ActiveWorkbook.Save
    End If
    Me.Saved = True
    Do Until Timer > Zeit + 5   ' max. 5 Sekunden warten
    Loop
End Sub
  1. Schließe den VBA-Editor und teste deine Anwendung.

Dieser Code sorgt dafür, dass beim Schließen des Workbooks eine Nachricht erscheint, ob Änderungen gespeichert werden sollen. Nach dieser Entscheidung wird die Zeit gestoppt und das Programm wartet bis zu 5 Sekunden, bevor es das Workbook schließt.


Häufige Fehler und Lösungen

  • Fehler: Das Workbook schließt sofort, ohne die Wartezeit abzuwarten.

    • Lösung: Stelle sicher, dass der Code im Workbook_BeforeClose-Ereignis platziert ist, damit er vor dem Schließen des Workbooks ausgeführt wird.
  • Fehler: Die Wartezeit wird nicht korrekt berechnet.

    • Lösung: Achte darauf, dass die Variable Zeit korrekt mit Timer initialisiert wird, bevor die Schleife beginnt.

Alternative Methoden

Falls du eine UserForm verwenden möchtest, um die Anzeige für eine bestimmte Zeit zu steuern, kannst du folgendes Beispiel nutzen:

Sub Start()
    Application.OnTime Now + TimeValue("00:00:05"), "Schließen"
    UserForm1.Show
End Sub

Sub Schließen()
    Unload UserForm1
End Sub

Diese Methode zeigt eine UserForm für 5 Sekunden und schließt sie dann automatisch.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du die Wartezeit in verschiedenen Szenarien nutzen kannst:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim Zeit As Single
    Zeit = Timer  ' Aktuelle Zeit speichern
    Worksheets("Tabelle1").Activate  ' Das gewünschte Blatt aktivieren
    Do Until Timer > Zeit + 5   ' 5 Sekunden warten
        ' Optionale: Hier kannst du Aktionen während der Wartezeit durchführen
    Loop
End Sub

In diesem Beispiel wird das Tabellenblatt "Tabelle1" aktiviert und es wird gewartet, während du beispielsweise eine Animation oder einen Ladebalken anzeigen könntest.


Tipps für Profis

  • Um die Wartezeit zu optimieren, kannst du Application.Wait verwenden, um die Excel-Berechnung zu stoppen, während du wartest. Dies kann deine Excel-Anwendung reaktionsschneller machen.
Application.Wait Now + TimeValue("00:00:05")
  • Experimentiere mit der Application.OnTime-Methode, um zeitgesteuerte Aktionen zu planen, die nicht blockierend sind.

FAQ: Häufige Fragen

1. Wie kann ich die Wartezeit auf eine andere Anzahl von Sekunden ändern? Ändere einfach die Zahl 5 in der Schleife Do Until Timer > Zeit + 5 auf die gewünschte Anzahl von Sekunden.

2. Funktioniert dieser Code in allen Excel-Versionen? Ja, der gezeigte VBA-Code sollte in den meisten modernen Excel-Versionen (Excel 2007 und höher) einwandfrei funktionieren.

3. Kann ich mehrere UserForms gleichzeitig verwenden? Ja, du kannst mehrere UserForms erstellen und sie nacheinander oder gleichzeitig anzeigen, indem du ihre Show-Methoden entsprechend anpasst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige