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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2011, 09:31   #1
123XYZ
Пользователь
 
Регистрация: 15.03.2011
Сообщений: 10
Восклицание Автоматический запуск макроса с таймаутом

Необходимо автоматически запустить макрос через несколько секунд ( например 5 ) после открытия листа (книги) Excel, т.к. таблица прорисовывается некоторое время после открытия и макрос не срабатывает.
123XYZ вне форума Ответить с цитированием
Старый 16.03.2011, 09:58   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Например вот код для переделки:
Код:
Sub Clock()
   ' Уведомляем Excel, что процедуру Alarm нужно вызвать
   Application.OnTime Sheets(1).[J3], "Alarm"
End Sub
Sub Alarm()
   MsgBox "Пора ужинать!!!"
End Sub
В Sheets(1).[J3] время запуска.
Можно так переделать:
Application.OnTime TimeValue(Now + TimeValue("00:00:05")), "Alarm"
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 16.03.2011 в 10:06.
Hugo121 вне форума Ответить с цитированием
Старый 16.03.2011, 10:01   #3
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Private Sub Workbook_Open()
application.ontime now+5/24/360 "MySub"
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 16.03.2011, 10:16   #4
123XYZ
Пользователь
 
Регистрация: 15.03.2011
Сообщений: 10
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
Private Sub Workbook_Open()
application.ontime now+5/24/360 "MySub"
Извините, я не очень хорошо разбираюсь в VBA - выдает синтаксическую ошибку

Hugo121. Спасибо, ваш вариант работает но выдает сообщение:

"не удается выполнить макрос - возможно этот макрос отсутствует в текущей книге либо все макросы отключены"

хотя в параметрах макросов указано - включить все макросы а функцию которую запускаю находится в "Эта книга"

Последний раз редактировалось 123XYZ; 16.03.2011 в 10:41.
123XYZ вне форума Ответить с цитированием
Старый 16.03.2011, 11:13   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Вероятно у Вас нет в модуле книги макроса Alarm.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 16.03.2011, 11:33   #6
123XYZ
Пользователь
 
Регистрация: 15.03.2011
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Вероятно у Вас нет в модуле книги макроса Alarm.
есть. только название другое
123XYZ вне форума Ответить с цитированием
Старый 16.03.2011, 11:37   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Запутались - я подразумевал стандартный модуль.
Если в модуле книги - попробуйте так: ThisWorkbook.Alarm

Да, проверил - код в ThisWorkbook:
Код:
Option Explicit

Private Sub Workbook_Open()
   ' Уведомляем Excel, что процедуру Alarm нужно вызвать
Application.OnTime TimeValue(Now + TimeValue("00:00:05")), "thisworkbook.Alarm"

End Sub

Sub Alarm()
   MsgBox "Пора ужинать!!!"
End Sub
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 16.03.2011 в 11:41.
Hugo121 вне форума Ответить с цитированием
Старый 16.03.2011, 12:09   #8
123XYZ
Пользователь
 
Регистрация: 15.03.2011
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Запутались - я подразумевал стандартный модуль.
Если в модуле книги - попробуйте так: ThisWorkbook.Alarm

Да, проверил - код в ThisWorkbook:
Код:
Option Explicit

Private Sub Workbook_Open()
   ' Уведомляем Excel, что процедуру Alarm нужно вызвать
Application.OnTime TimeValue(Now + TimeValue("00:00:05")), "thisworkbook.Alarm"

End Sub

Sub Alarm()
   MsgBox "Пора ужинать!!!"
End Sub
ваша процедура запускается отлично, а у меня выдает ошибку -
application-defined or object-defined error.

ps. обрабатываю лист эксель)
123XYZ вне форума Ответить с цитированием
Старый 16.03.2011, 12:16   #9
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Так это может уже в Вашей процедуре ошибка?
Поставьте в ней первой строкой Stop - должно после запуска выкинуть в редактор, далее по F8 можете прогнать.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 16.03.2011, 12:18   #10
123XYZ
Пользователь
 
Регистрация: 15.03.2011
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Так это может уже в Вашей процедуре ошибка?
Поставьте в ней первой строкой Stop - должно после запуска выкинуть в редактор, далее по F8 можете прогнать.
если вручную запускать ее либо автозапуском без таймера, то работает отлично

PS. Разобрался. в том листе стояла защита от изменений.

теперь вопрос как ее отключить программно))

Последний раз редактировалось 123XYZ; 16.03.2011 в 12:46.
123XYZ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматический запуск макроса АлёнаP Microsoft Office Excel 4 28.03.2010 12:55
автоматический запуск php ilma55 Win Api 0 24.02.2010 13:06
Запуск макроса serafim09 Microsoft Office Excel 9 03.09.2009 16:55
Запуск макроса с параметрами из другого макроса Saladin Microsoft Office Excel 2 19.01.2009 09:43
Автоматический запуск макроса Len@ Microsoft Office Excel 6 23.07.2008 12:05