ich möchte in einem Makro 1 Sekunde "schlafen", also die weitere Ausführung um
1 Sekunde verzögern. Dieses immer wieder in einer Schleife.
Anscheinend gibt es den Befehl SLEEP aber gar nicht.
Gibt es eine andere Möglichkeit?
Gruß
Holger
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub test()
MsgBox (Timer)
Sleep 1000
MsgBox (Timer)
End Sub
Grüße,Public Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim intCol As Integer
If Target.Cells.Count And Target.Address = "$L$10" Then
intCol = 14
If Columns("N:R").Hidden = True Then
Call GetPublishesExtended(ActiveSheet)
For intCol = 14 To 18
Columns(intCol).Hidden = False
Application.Wait (Now + TimeSerial(0, 0, 1))
Next intCol
Target.Interior.Color = vbYellow
Else
For intCol = 18 To 14 Step -1
Columns(intCol).Hidden = True
Application.Wait (Now + TimeSerial(0, 0, 1))
Next intCol
Target.Interior.Color = vbBlack
End If
End If
End Sub
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim intCol As Integer
If Target.Cells.Count And Target.Address = "$L$10" Then
intCol = 14
If Columns("N:R").Hidden = True Then
Call GetPublishesExtended(ActiveSheet)
For intCol = 14 To 18
Columns(intCol).Hidden = False
'Application.Wait (Now + TimeSerial(0, 0, 1))
sleep 500
Next intCol
Target.Interior.Color = vbYellow
Else
For intCol = 18 To 14 Step -1
Columns(intCol).Hidden = True
'Application.Wait (Now + TimeSerial(0, 0, 1))
sleep 500
Next intCol
Target.Interior.Color = vbBlack
End If
End If
End Sub
Aber Application.Wait (Now + TimeSerial(0, 0, 0.5)) müsste auch funktionieren, oder?Um den SLEEP Befehl in Excel VBA zu nutzen, kannst Du die folgende Schritt-für-Schritt-Anleitung befolgen:
Öffne den VBA-Editor:
ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.Füge eine neue Modul hinzu:
Einfügen > Modul.Deklariere die Sleep-Funktion:
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)Erstelle eine Subroutine:
Sleep Befehl verwendet wird:
Sub TestSleep()
MsgBox (Timer) ' Zeige die aktuelle Zeit an
Sleep 1000 ' Warten für 1 Sekunde
MsgBox (Timer) ' Zeige die Zeit nach der Pause an
End SubFühre das Makro aus:
F5, um die Subroutine auszuführen und die Wirkung von Sleep zu beobachten.Fehler: „Sleep nicht definiert“
Lösung: Stelle sicher, dass die Deklaration Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) korrekt im Modul steht.
Fehler: Makro stoppt nicht wie erwartet
Lösung: Überprüfe die Zeitparameter, die Du an Sleep übergibst. Die Zeit sollte in Millisekunden angegeben werden (1 Sekunde = 1000 Millisekunden).
Wenn Du den SLEEP Befehl nicht verwenden möchtest, gibt es Alternativen:
Application.Wait:
Application.Wait (Now + TimeValue("0:00:01")) ' Pausiert für 1 Sekunde
VBA DoEvents:
Dim StartTime As Double
StartTime = Timer
Do While Timer < StartTime + 1 ' 1 Sekunde warten
DoEvents
Loop
Beide Methoden sind nützlich, wenn Du die Ausführung von Makros pausieren möchtest, ohne den SLEEP Befehl zu verwenden.
Hier ein Beispiel, wie Du den Sleep Befehl in einer Schleife verwenden kannst:
Sub ExampleSleepLoop()
Dim i As Integer
For i = 1 To 5
MsgBox "Iteration " & i
Sleep 500 ' Pause für 0.5 Sekunden
Next i
End Sub
In diesem Makro wird jede Iteration 0.5 Sekunden lang pausiert, bevor die nächste Nachricht angezeigt wird.
Variabeln für dynamische Pausen: Verwende Variablen, um die Wartezeit flexibel zu gestalten. Beispiel:
Dim pauseTime As Long
pauseTime = 500 ' 0.5 Sekunden
Sleep pauseTime
Verwende Sleep in Kombination mit Animationen: Um ein besseres Benutzererlebnis zu schaffen, kannst Du Sleep verwenden, um Animationen zu simulieren, wie das Einblenden von Zellen.
1. Funktioniert der SLEEP Befehl in allen Excel-Versionen?
Ja, der SLEEP Befehl kann in Excel VBA unabhängig von der Version verwendet werden, solange Du die richtige Deklaration vornimmst.
2. Wie kann ich eine Pause von weniger als einer Sekunde machen?
Du kannst die Millisekunden anpassen, z.B. Sleep 250, um eine Pause von 0.25 Sekunden zu erzeugen.
3. Gibt es eine Grenze für die Wartezeit?
Ja, die maximale Wartezeit für den SLEEP Befehl ist 2.147.483.647 Millisekunden, was etwas über 24 Tage entspricht. Achte darauf, dass Du angemessene Werte verwendest.
Nutze diese Anleitungen, um die Sleep Funktion effektiv in Deinen Excel VBA Projekten einzusetzen!