PDA

Vollständige Version anzeigen : Tataturabfrage während Schleife läuft ?


hari
16.07.2001, 04:18
Habe ein kniffliges, vielleicht sogar unlösbares Problem. Ich möchte während eine Schleife (Do Loop oder For Next) läuft, gerne wissen ob die Pfeiltasten nach oben, links oder rechts gedrückt wurden. Während die Schleife läuft geht es nicht nur danach. Siehe den Quell-Code unten. Hat irgendjemand eine Idee, ob mir geholfen werden kann. Wäre wirklich sehr nett und spitzenmäßig. Danke schon mal für hoffentlich zahlreiche Anregungen.

Viele Grüße

Günther

Sub Pfeil_nach_oben_ein()
Application.OnKey "{UP}", "Pfeil_nach_oben"
End Sub
Sub Pfeil_nach_links_ein()
Application.OnKey "{LEFT}", "Pfeil_nach_links"
End Sub
Sub Pfeil_nach_rechts_ein()
Application.OnKey "{RIGHT}", "Pfeil_nach_rechts"
End Sub
Sub Pfeil_nach_oben()
MsgBox "Pfeil nach oben gedrückt"
Application.OnKey "{UP}"
End Sub
Sub Pfeil_nach_links()
MsgBox "Pfeil nach links gedrückt"
Application.OnKey "{LEFT}"
End Sub
Sub Pfeil_nach_rechts()
MsgBox "Pfeil nach rechts gedrückt"
Application.OnKey "{RIGHT}"
End Sub
Sub Pfeil_Tasten_abfragen()
Pfeil_nach_oben_ein
Pfeil_nach_links_ein
Pfeil_nach_rechts_ein
Dim Pausenlänge, Start, Ende, Gesamtdauer
If (MsgBox("5 Sekunden Pause?", 4)) = vbYes Then
Pausenlänge = 5 ' Dauer festlegen.
Start = Timer ' Anfangszeit setzen.
Do While Timer < Start + Pausenlänge
DoEvents ' Steuerung an andere Prozesse abgeben.
Loop
Ende = Timer ' Ende festlegen.
Gesamtdauer = Ende - Start ' Gesamtdauer berechnen.
MsgBox "Die Pause dauerte " & Gesamtdauer & " Sekunden"
Else
End
End If
End Sub

Dan
16.07.2001, 06:33
Hai,
bin mir nicht ganz sicher, aber schau mal unter "DoEvents" nach, damit lässt man
IMHO andere Ereignisse zu...

Nachtrag: gefunden auf www.schmittis-page.de: (http://www.schmittis-page.de:)

'Endlosschleife mit Escape abbrechen
'In der Regel können Endlosschleifen nur über 'STRG+Untbr abgebrochen werden.
'Im schlimmsten Fall muss man Excel über den 'Taskmanager "abwürgen".
'Mit dieser kleinen Routine gelingt es mit 'Escape:

Private Declare Function GetAsyncKeyState Lib "user32" _
(ByVal vKey As Long) As Integer

Sub Endlosschleife()
Do
DoEvents
If (GetAsyncKeyState(&H1B)) <> 0 Then
Exit Do
End If
Loop Until 1 = 2
End Sub



Bye Daniel...

[Dieser Beitrag wurde von Dan am 16.07.2001 editiert.]