Dare all'utente la possibilità di interrompere un loop

 

Molto spesso si vorrebbe la possibilità di interrompere un'elaborazione cliccando su un qualsiasi punto della finestra del programma, oppure premendo un tasto specifico per esempio il tasto ESC.
Nell'esempio che segue, eseguo un Loop lanciato da un CommandButton (cmdStart) e per interromperlo uso il tasto ESC o il click del Mouse.

Inserire il seguente codice:

'API Dichiarazioni
Private Declare Function GetAsyncKeyState Lib "user32.dll" _
(ByVal vKey As Long) As Integer


'Tasto ESCAPE
Const VK_ESCAPE = &H1B
'Button Click del Mouse
Const VK_LBUTTON = &H1


Private Sub cmdStart_Click()
Do
    If GetAsyncKeyState(VK_ESCAPE) < 0 Or _
        GetAsyncKeyState(VK_LBUTTON) < 0 Then
            Debug.Print "-------> ESCI <-------"
            Exit Do
    End If
    Debug.Print "______ LOOP ___________"
Loop
End Sub


Testato su: Win98, Win2000, WinMe, WinXP