Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 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-сайт: xawp.narod.ru
 Профиль | | #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
Да вы ЧЁ???!!! Метод Excel.Application.OnTime(). Это же ВБА, какой таймер на форму, какой цыкл, нафиг вообще форма!!!!??


А нельзя ли поподробнее рассказать, что это за метод такой и как он работает? А то я в VBA абсолютный новичок... Есть только опыт разработки непрофессиональных программ в среде Basic 5.0 и 6.0...

Ответить

Номер ответа: 9
Автор ответа:
 fifa36



Вопросов: 33
Ответов: 116
 Профиль | | #9 Добавлено: 03.09.09 10:00
sub my_sub
'Здесь команды процедуры
'...
'Дальше запускается метод 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
  1. Excel.Application.OnTime        EarliestTime:=MyTime, Procedure:="MySub", Schedule:=True

метод запускает процедуру с названием например 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
Ну всё, разобрался! Всё классно работает! Большое спасибо!!!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам