これは、必要なときにうまく機能します。ユーザーがエスケープ キーを押してループを終了したかどうかを確認します。
非常に大きな欠点があることに注意してください。ユーザーが任意のアプリケーションでエスケープ キーを押したかどうかを検出します。しかし、長時間実行されるループを中断する方法や、Shift キーを押したままにしてコードを少しバイパスする方法を自分自身に与えたい場合、これは開発における素晴らしいトリックです。
Option Explicit
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Private Sub Command1_Click()
Do
Label1.Caption = Now()
Label1.Refresh
If WasKeyPressed(vbKeyEscape) Then Exit Do
Loop
Label1.Caption = "Exited loop successfully"
End Sub
Function WasKeyPressed(ByVal plVirtualKey As Long) As Boolean
If (GetAsyncKeyState(plVirtualKey) And &H8000) Then WasKeyPressed = True
End Function
GetAsyncKeyState のドキュメントは次のとおりです。
http://msdn.microsoft.com/en-us/library/ms646301(VS.85).aspx