Страницы: 1
RSS
Укрощение Timer Function
 
Будьте добры.
Имеем:

PauseTime = 1
Start = Timer
Do While Timer < Start + PauseTime
DoEvents
Loop

PauseTime = 20
Start = Timer
Do While Timer < Start + PauseTime
MyObject.Visible = True
DoEvents
Loop


Если первый или второй циклы должны ПРИНУДИТЕЛЬНО прерываться, то как грамотно оформить Error, т.е. как грамотно ПРИНУДИТЕЛЬНО прерывать тот или другой циклы?
On Error GoTo My_Error что-то не очень на них действует.
 
а ошибку вы как вызываете?
не вижу я в вашем коде Err.Raise
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Это хозяйство находится в процедуре Элемент_MouseMove(..). Т.е. могут возникнуть 2 ситуации:
1. Убираем курсор с элемента раньше , чем 1 сек
2.Убираем курсор с элемента  после 1 сек , но раньше окончания 20 сек ->  MyObject.Visible = False.
ПРИМ. Прошу прощения. Этот вопрос (немного) вырван из контекста темы на старом форуме. Но туда ведь уже не добраться.  Но вопрос имеет право звучать и как самостоятельный.
 
А вопрос (в общем смысле): как грамотно п р и н у д и т е л ь н о его прекращать.
 
Без файла-то трудно сказать. Если внутри цикла возникает ошибка - то только её отслеживанием:

Код
On error resume next
PauseTime = 1 
Start = Timer 
Do While Timer < Start + PauseTime 
if err.number then exit do
DoEvents 
Loop
err.clear
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Спасибо, Дмитрий, большое. Файлы все находятся на старом форуме. Здесь уже не имеет смысла ими загружать движок.
И соответственно:
On error resume next
PauseTime2 = 20
Start2 = Timer
Do While Timer < Start2 + PauseTime2
MyObject.Visible = True
if err.number then exit do
DoEvents
Loop
err.clear
т.е. так делать для к а ж д о г о   TimerFunction ?
 
В общем-то да, для каждого. Если их много - делайте таймер через классы и там же все отслеживайте. Будет проще.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Еще раз благодарю.
ПРИМ. Примеряю различные TimerFunction'ы. 'On error resume next'  или  'On Error GoTo My_Error ' -действительно, применять в зависимости от смысла комбинации. Но основопологающим явится  отслеживание ошибки: 'if err.number then exit do'
 
Цитата
Сергей Кр пишет:
Код
PauseTime = 1
Start = Timer
Do While Timer < Start + PauseTime
DoEvents
Loop
:o onTime
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Спасибо, Саша.
Вы, наверно, поняли, какую тему я имел ввиду. Я там пробовал применять  onTime. Но, Timer Function  оказался востребованнее. Поэтому, необходимо было полностью определиться с его поведением.

Спасибо замечательному форуму.
Страницы: 1
Наверх