Страница: 1 |
Страница: 1 |
Вопрос: Выполнение макроса каждый TimeInterval
Добавлено: 21.08.09 09:49
Автор вопроса: fifa36
Здравствуйте!
Подскажите, пожалуйста как сделать чтобы макрос выполнял процедуру, скажем каждую секунду(или минуту или час и т.д.)
Ответы
Всего ответов: 15
Номер ответа: 1
Автор ответа:
fifa36
Вопросов: 33
Ответов: 116
Профиль | | #1
Добавлено: 21.08.09 09:55
Желательно описать самый оптимальный способ, т.к. тупое решение такой задачи представляю)) организовав цикл while и сравнивая Time на предыдущей итерации с текущим Time.
Номер ответа: 2
Автор ответа:
UnDeAdZak
Вопросов: 80
Ответов: 476
Профиль | | #2
Добавлено: 21.08.09 12:36
а слабо таймер на форму бросить?
Номер ответа: 3
Автор ответа:
fifa36
Вопросов: 33
Ответов: 116
Профиль | | #3
Добавлено: 21.08.09 14:26
А без формы нельзя?
Номер ответа: 4
Автор ответа:
AWP
ICQ: 345685652
Вопросов: 96
Ответов: 1212
Web-сайт:
Профиль | | #4
Добавлено: 23.08.09 01:42
Можно, но понадобиться цикл.
Номер ответа: 5
Автор ответа:
GDK
Вопросов: 13
Ответов: 348
Профиль | | #5
Добавлено: 28.08.09 13:25
Да вы ЧЁ???!!! Метод Excel.Application.OnTime(). Это же ВБА, какой таймер на форму, какой цыкл, нафиг вообще форма!!!!??
Номер ответа: 6
Автор ответа:
fifa36
Вопросов: 33
Ответов: 116
Профиль | | #6
Добавлено: 31.08.09 14:59
Всем спасибо! GDK - спасибо особенно! Метод Excel.Application.OnTime() то что надо!
Номер ответа: 7
Автор ответа:
Олег
Вопросов: 9
Ответов: 30
Профиль | | #7
Добавлено: 03.09.09 01:12
Подскажите, пожалуйста, как это сделать. Ну в смысле, откуда взять таймер. Ведь среди контролек в Excel 2002 и 2003 он отсутствует...
Номер ответа: 8
Автор ответа:
Олег
Вопросов: 9
Ответов: 30
Профиль | | #8
Добавлено: 03.09.09 01:18
А нельзя ли поподробнее рассказать, что это за метод такой и как он работает? А то я в VBA абсолютный новичок... Есть только опыт разработки непрофессиональных программ в среде Basic 5.0 и 6.0...
Номер ответа: 9
Автор ответа:
fifa36
Вопросов: 33
Ответов: 116
Профиль | | #9
Добавлено: 03.09.09 10:00
'Здесь команды процедуры
'...
'Дальше запускается метод OnTime с двумя аргументами,
'первый- во сколько запустить, второй --что запустить
'В данном слае процедура запускает саму себя через одну
'минуту.
'О других параметрах функции OnTime почитайте в Хелпе
'Например параметр-время ожидания если процедура занята,
'сколько ждать пока освободится
Application.OnTime Now + TimeValue("00:01:00", "my_sub"
End Sub
Номер ответа: 10
Автор ответа:
fifa36
Вопросов: 33
Ответов: 116
Профиль | | #10
Добавлено: 03.09.09 10:01
sub my_sub
'Здесь команды процедуры
'...
'Дальше запускается метод OnTime с двумя аргументами,
'первый- во сколько запустить, второй --что запустить
'В данном слае процедура запускает саму себя через одну
'минуту.
'О других параметрах функции OnTime почитайте в Хелпе
'Например параметр-время ожидания если процедура занята,
'сколько ждать пока освободится
Application.OnTime Now + TimeValue("00:01:00", "my_sub"
End Sub
Номер ответа: 11
Автор ответа:
fifa36
Вопросов: 33
Ответов: 116
Профиль | | #11
Добавлено: 03.09.09 10:09
скобку забыл добавить
Application.OnTime Now + TimeValue("00:01:00", "my_sub"
Номер ответа: 12
Автор ответа:
fifa36
Вопросов: 33
Ответов: 116
Профиль | | #12
Добавлено: 03.09.09 10:10
блин смайлик запарил))
Номер ответа: 13
Автор ответа:
GDK
Вопросов: 13
Ответов: 348
Профиль | | #13
Добавлено: 03.09.09 12:48
метод запускает процедуру с названием например MySub Procedure:="MySub" в указанное время EarliestTime:=MyTime, которое в данном случае содержится в переменной MyTime, Schedule:=True - это параметр, значение которого влияет на отмену предыдущих вызовов OnTime, т.е.
запускаем метод в 10:00 чтобы он как бы завёл будильник на 12:00
запускаем метод в 10:30 чтобы он как бы завёл будильник на 15:00
если Schedule:=True, то будет запуск вашей процедуры только в 15:00
если Schedule:=False, то будет запуск вашей процедуры в 12:00 и в 15:00
MyTime as Date должно быть кажется
Номер ответа: 14
Автор ответа:
Олег
Вопросов: 9
Ответов: 30
Профиль | | #14
Добавлено: 03.09.09 23:00
fifa36 и GDK, большое вам спасибо за разъяснения... Сходу я пока не слишком ещё въехал, буду разбираться потихоньку...
У моего будущего макроса цель такая... Excel импортирует из Интернета данные в таблицу. Когда в самой важной для меня ячейке значение превысит определённый порог, должен прозвучать звуковой сигнал... Это всё задумано для того, чтобы мне около компа не постоянно сидеть, а чтобы я мог отходить, а он меня "звал", когда надо... Но часто мне в эту ячейку заглядывать нет смысла. Оптимально 1 раз в секунду... Вообще-то, можно было бы даже в бесконечном цикле с DoEvents всё это делать, но тогда прога много ресурсов будет жрать и сильно притормаживать... Классно было бы, если бы в Excel среди контролек был ВизуалБейсиковский Таймер. Тогда бы я его разместил на невидимой форме, задал интервал, да и дело с концом... А так придётся изучать "новый материал"
Номер ответа: 15
Автор ответа:
Олег
Вопросов: 9
Ответов: 30
Профиль | | #15
Добавлено: 06.09.09 15:53
Ну всё, разобрался! Всё классно работает! Большое спасибо!!!