Есть TextBox, при изменении текста в котором должен срабатывать макрос. Но надо, чтоб макрос сработал после ввода всех символов, но не выходя из самого TextBox. Т.е. через некоторое время после ввода последнего символа, а не при вводе каждого символа.
Делал так.
'В модуле:
'В модуле формы:
Почему-то срабатывает через 5 сек после начала ввода символов, а не после. Где тут косяк, не могу понять.
Делал так.
'В модуле:
Код |
---|
Public TextBoxUpdateTime Sub MyMacro() MsgBox "Hello!" End Sub |
'В модуле формы:
Код |
---|
Private Sub TextBox_Change() Dim tx tx = TimeValue("00:00:05") ' интервал задержки If TextBoxUpdateTime+ tx < Now Then ' если время выполнения макроса ещё не подошло On Error Resume Next Application.OnTime TextBoxUpdateTime+ tx, "MyMacro", Schedule:=False ' отмена запуска макроса в старое время On Error GoTo 0 TextBoxUpdateTime= Now Application.OnTime TextBoxUpdateTime+ tx, "MyMacro" ' назначение запуска на новое время End If End Sub |
Почему-то срабатывает через 5 сек после начала ввода символов, а не после. Где тут косяк, не могу понять.