Вот типичный способ ожидания события в течение ограниченного периода времени:
Sub DualCriteria()
Dim tStart As Date, tNow As Date
msg = ""
tStart = Now
Do
DoEvents
If Range("A1").Value <> "" Then
msg = "event occured"
Exit Do
End If
tNow = Now
If tNow - tStart > TimeSerial(0, 5, 0) Then
msg = "timeout"
Exit Do
End If
Loop
MsgBox msg
End Sub
Макрос ожидает, когда пользователь поместит значение в ячейку A1 . Если в течение 5 минут ничего не происходит, l oop все равно завершается.
В сообщении указывается, почему закончился l oop.
ПРИМЕЧАНИЕ:
Doevents
позволяет разделить фокус с действиями на листе.