DoEvents in Excel VBA: Probleme und Lösungen
Schritt-für-Schritt-Anleitung
- Makro erstellen: Öffne Excel und erstelle ein neues Makro. Du kannst dies tun, indem du auf "Entwicklertools" > "Visual Basic" klickst.
-
Code einfügen: Kopiere den folgenden Code in ein Modul:
Private Sub Button_Start_Click()
Dim i As Integer
For i = 1 To Me.TextBox_Wiederholungen.Value
Call DoEv
Me.Move_Cursor_to
SendMausklick MOUSE_LEFT
Next i
End Sub
Sub DoEv()
Dim Start As Double
Start = Timer
Do While Timer < Start + Me.TextBox_Intervall.Value
DoEvents
Loop
End Sub
- Textboxen konfigurieren: Stelle sicher, dass die Textboxen für Intervalle und Wiederholungen im UserForm korrekt konfiguriert sind.
- Makro starten: Klicke auf den Button, um das Makro zu starten.
Häufige Fehler und Lösungen
Alternative Methoden
-
Application.Wait: Eine einfache Methode, um eine Pause einzulegen:
Application.Wait (Now + TimeValue("0:01:00"))
Beachte hierbei, dass Excel während der Wartezeit "tot" ist, was in manchen Fällen nicht ideal sein könnte.
-
Application.Ontime: Diese Methode erlaubt es dir, ein Makro zu einem bestimmten Zeitpunkt auszuführen, ohne dass das aktuelle Makro blockiert wird. Hier ist ein Beispiel:
Application.OnTime Now + TimeValue("00:01:00"), "MeinMakro"
Praktische Beispiele
Ein Beispiel für ein vollständiges Makro, das DoEvents
und Application.OnTime
kombiniert:
Public NächsterStart As Date
Public Anz As Long
Sub MeinMakro()
Anz = Anz + 1
' Hier kannst du deine Logik einfügen
NächsterStart = Now + TimeValue("00:01:00")
Application.OnTime NächsterStart, "MeinMakro"
End Sub
Dieses Beispiel zeigt, wie du das Makro regelmäßig ohne Blockierung ausführen kannst.
Tipps für Profis
- Verwende Public-Variablen, um den Status deiner Makros über Module hinweg zu speichern.
- Überlege, ob du
DoEvents
wirklich benötigst. In vielen Fällen reicht Application.Wait
oder Application.OnTime
aus.
- Halte deinen Code modular, um die Wartbarkeit zu erhöhen und Fehler zu vermeiden.
FAQ: Häufige Fragen
1. Warum sollte ich DoEvents
verwenden?
DoEvents
ermöglicht es Excel, auf andere Ereignisse (wie Benutzereingaben) zu reagieren, während dein Makro läuft.
2. Gibt es eine maximale Laufzeit für ein Makro in Excel VBA?
Es gibt keine festgelegte maximale Laufzeit, aber lange Laufzeiten können zu Leistungseinbußen führen und das Makro könnte aufgrund von Speicherproblemen stoppen.
3. Was ist der Unterschied zwischen DoEvents
und Application.Wait
?
DoEvents
erlaubt es Excel, andere Aufgaben während der Ausführung deines Makros zu erledigen, während Application.Wait
Excel "stoppt", bis die Wartezeit abgelaufen ist.
4. Wie kann ich sicherstellen, dass mein Makro nicht stoppt?
Nutze Application.OnTime
, um deine Makros in Intervallen auszuführen, und berücksichtige dabei sowohl Datum als auch Uhrzeit.