Страницы: 1
RSS
Функция паузы
 
Здравствуйте!  
Использую в своем коде фуекцию:  
Pausa1 = Val(Sheets("Лист1").TextBox4)  
Application.Wait Time:=Now + TimeSerial(0, 0, Pausa1)  
 
Но если я задаю "Pausa1" меньше чем 1 секунда (0,5    0,7    0,8  ), то задержка производиться  в 1 секунду  
Как задать десятые части секунды?
 
А что такое "ontime"?  
И как задатьформат    
ч:мм:сс.000
 
вроде как это оснавное -  
"делается ввод меньше секунды просто: копируем ячейку числом 100, выбираем ячейку с форматом времени и значением 1 секунда - спец вставка - значения - разделить, получаем сотую секунды, используем значение ячейки в ВБА"  
 
но, как привязать это к    
Application.Wait Time:=Now + TimeSerial(0, 0, Pausa1)
 
Помогите ни как не могу разобраться...
 
А скачать файл пример из предложенной ссылки и посмотреть?  
Dim Per As Date  
Per = ThisWorkbook.Worksheets("Лист1").Range("I5").Value  
Application.Wait Time:=Now + Per  
 
В I5 время в формате ч:мм:сс.000  
 
И еще раз прочтите ту тему: эксель округляет до целой секунды. С любым методом - что .Wait, что .OnTime
Bite my shiny metal ass!      
 
Вот рабочий кусочек моего макроса:  
(Подает и снимает на определенное время("Pausa")напрежения еа ножки LPT порта  
If Cells(m, n).Value = 1 Then  
 DlPortWritePortUchar &H378, 64  
 End If  
 If Cells(m, n).Value = 2 Then  
 DlPortWritePortUchar &H378, 128  
 End If  
   Pausa = Val(Sheets("Лист1").TextBox3)  
Application.Wait Time:=Now + TimeSerial(0, 0, Pausa)  
 DlPortWritePortUchar &H378, 0    
 Pausa1 = Val(Sheets("Лист1").TextBox4)  
Application.Wait Time:=Now + TimeSerial(0, 0, Pausa)  
 
Пока "Pausa" не могу сделать меньше 1 секунды  
Варианты    
Per = ThisWorkbook.Worksheets("Лист1").Range("I5").Value  
Application.Wait Time:=Now + Per  
Не подходит - округляет до секунды!  
 
А вариант  
ExecuteExcel4Macro ("ON.TIME(NOW()+0.000005787, """ & ThisWorkbook.Name & "!ZVI_Timer"")")  
Работает постоянно! - не остановишь...  
 
Может еще как нибудь можно?
 
Попробуйте останавливать по аналогии с современным ОнТайм:  
ExecuteExcel4Macro ("ON.TIME(NOW()+0.000005787, """ & ThisWorkbook.Name & "!ZVI_Timer"",,False)")  
Только уже придется NOW()+0.000005787 в глобальную переменную загонять.  
Завтра с работы проверю.  
А еще, наверное, можно по аналогии записать:  
ExecuteExcel4Macro ("WAIT(NOW()+0.000005787)")  
Тоже завтра синтаксис на работе смогу уточнить.  
Или здесь самостоятельно сможете найти справку по Excel4Macro - тот же ZVI и давал ссылку.
Bite my shiny metal ass!      
 
По-моему нашел!!!!!!!!!! УРА!!!!!!!  
Sub Макрос1()  
'  
'Dim PauseTime As Single  
   Dim Start As Single  
   Dim Finish As Single  
   Dim TotalTime As Single  
     
   PauseTime = 0.2  
   Start = Timer  
 
   Do While Timer < Start + PauseTime  
       DoEvents  
   Loop  
 
   Finish = Timer  
   TotalTime = Finish - Start  
Cells(1, 1).Value = 1  
 
Но от другого варианта не откажусь....
 
Удивительная вещь...  
Когда задаю  PauseTime = 0.3 непосредственно в коде, то все работает  
Как только через Cells или TextBox - округляет ...
 
Я добил ее все таки!!!!!! Меня переполняет радость!!! Спасибо всем!!! Кто направлял меня к результату    
 
Dim Z As Single  
Z = Val(Sheets("Лист1").TextBox3)  
PauseTime = Z
 
{quote}{login=artclon}{date=08.02.2010 10:01}{thema=}{post}Удивительная вещь...  
Когда задаю  PauseTime = 0.3 непосредственно в коде, то все работает  
Как только через Cells или TextBox - округляет ...{/post}{/quote}Это тут недавно обсуждали. Вот только найти не смог, а яндекс, видимо, еще не проиндексировал.  
Val чувствительна к десятичному разделителю. Поэтому лучше CDbl.  
 
И еще проверил синтаксис - угадал :)  
PauseTime = 0.00000011574  
t = Timer  
ExecuteExcel4Macro ("WAIT(NOW()+" & PauseTime & ")")  
MsgBox Timer - t  
End Sub  
 
Вот только меньше 0.015625 сек задержка не выходит  
И в варианте с Do While Timer < Start + PauseTime минимум такой же.  
Тут обсуждался более точный таймер:  
http://www.planetaexcel.ru/forum.php?thread_id=8968
Bite my shiny metal ass!      
 
0.015625 = 1/64  
Видимо, такой предел.
Bite my shiny metal ass!      
Страницы: 1
Читают тему
Наверх