Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2010, 21:05   #1
artclon
Новичок
Джуниор
 
Регистрация: 08.02.2010
Сообщений: 1
По умолчанию Пауза выполнения макроса

Помогите! мне неохбходимо в своем макросе включить функцию паузы
в секундах и десятых ее частях, дело в том что стандартные функции округляют до 0,5 в 0, а с 0,5 до 1 секунды. Измучился...

(вот код включения выключения ножек порта 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)

ПОМОГИТЕ....
artclon вне форума Ответить с цитированием
Старый 08.02.2010, 21:47   #2
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Вот самое интересное - Вам же сказали: методы OnTime и Wait не могут работать с интервалом менее секунды. Дали код меньшесекундный. А Вы никак не успокоитесь и очевидно думаете, что на другом форуме у людей Excel другой....
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 08.02.2010, 22:12   #3
sergiksergik
Пользователь
 
Аватар для sergiksergik
 
Регистрация: 25.01.2009
Сообщений: 81
Смех

не получится

Последний раз редактировалось sergiksergik; 08.02.2010 в 22:14.
sergiksergik вне форума Ответить с цитированием
Старый 09.02.2010, 05:13   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Вариант1:
Функция паузы:
Код:
Function Pauza(Tm As Double)
    vrm! = Timer
    Do While Timer - vrm! < Tm: DoEvents: Loop
End Function
Пример использования:
Код:
Sub Test1()
    Dim ss As Double: ss = Timer
    Pauza Val(Sheets("Лист1").TextBox3)
    MsgBox "Время паузы составило " & Timer - ss & " сек."
End Sub

Вариант2 (с помощью функции WinApi):
Объявление функции:
Код:
Private Declare Function GetTickCount Lib "kernel32" () As Long
Пример использования:
Код:
Sub Delay_Paus()
    MsgBox "Начнем?"
    Tm = Val(Sheets("Лист1").TextBox3) 'время задержки (в миллисекундах)
    ss = GetTickCount: DoEvents
    Do While GetTickCount - ss < Tm: DoEvents: Loop
    MsgBox "Конец."
End Sub
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 09.02.2010 в 12:38.
SAS888 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Время выполнения макроса... nikolai_P Microsoft Office Excel 9 03.04.2013 00:59
Как отметить несколько строк для выполнения макроса Vitaliy87 Microsoft Office Excel 8 07.02.2010 15:17
Как сократить время выполнения макроса? Алексей11111 Microsoft Office Excel 11 01.12.2009 20:04
скрыть процесс выполнения макроса Iskin Microsoft Office Excel 1 21.11.2008 07:28
Выполнения макроса(с подстановкой имени) при условии ячейки... MaxZoa Microsoft Office Excel 7 22.04.2008 11:08