Wie kann ich mit VBA sagen, dass das Programm kurz warten soll, bevor es einen Befehl ausführt?
Ich habe ein kleines Schere Stein Papier Programm gebaut und will jetzt, dass wenn ein Knopf gedrückt wird das Ergebnis des Computer Gegners angezeigt wird und nach einer Sekunde wieder entfernt wird. Ich habe alles fertig soweit, dass einzige, was ich noch brauche ist die Sekunde Wartezeit. Hier ist der Code:
Sub Submit_Button()
[A1] = "GO"
Application.OnTime Now + TimeValue("00:00:01"), "Spiel"
[A1] = ""
End Sub
4 Antworten
Man kann in VBA eigene "Event" erstellen, die dann auch zeitgesteuert aktiv werden.
Google: "VBA Timer Event erstellen"
Sleep ms
ms Millisekunden von 50 bis 65500
irgendjemand hat sowas seltsames gepostet:
Sub ccSleep(seconds)
cmd = "%COMSPEC% /c ping -n " & 1 + seconds & " 127.0.0.1>nul"
objShell.Run cmd,0,1
End Sub
also das soll dann deine neue Sleep-Funktion sein
ccSleep 1 wäre 1 Sekunde Pause. Es wird 1 Sekunde ein Ping auf sich selbst gemacht ... lol. Statt des objShell.Run musst du natürlich das Run von VBS einsetzen.
Application.Run ... keine Ahnung ... such halt mal
Ich würde das - wenn es eine "richtige" Programmiersprache wäre - über einen Timer lösen. Den Programmfluss durch ein "Wait" zu blockieren ist nur in seltenen Fällen eine gute Idee.
Ist ihnen bekannt, wie ich einen solchen Timer in VBA erstelle?
OK, es gibt wohl keinen, aber Microsoft liefert eine Lösung, welche das Programm nicht blockiert.
https://docs.microsoft.com/de-de/office/vba/language/reference/user-interface-help/timer-function
PauseTime = 5 ' Set duration.
Start = Timer ' Set start time.
Do While Timer < Start + PauseTime
DoEvents ' Yield to other processes.
Loop
Application.Wait ("00:00:01") sollte dein Problem lösen.
Sleep geht leider nur in einer Funktion :(