Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Запуск макроса по времени - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Запуск макроса по времени (Макросы/Sub)
Запуск макроса по времени
maverick_77 Дата: Воскресенье, 19.07.2015, 18:06 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 39
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Здравствуйте!
Помогите, плз, решить такую задачу:
Имеем три макроса. Первый запускается при открытии книги.
Второй запускается кнопкой.
Третий должен запуститься либо через 45 минут после Первого (после открытия), либо через 15 минут после Второго.
Как такое провернуть?

PS: не могу никак разобраться с правилами использования Application.OnTime и TimeValue. Вроде как они должны бы помочь в этой задаче(?)


если нельзя, но очень хочется, то можно!
 
Ответить
СообщениеЗдравствуйте!
Помогите, плз, решить такую задачу:
Имеем три макроса. Первый запускается при открытии книги.
Второй запускается кнопкой.
Третий должен запуститься либо через 45 минут после Первого (после открытия), либо через 15 минут после Второго.
Как такое провернуть?

PS: не могу никак разобраться с правилами использования Application.OnTime и TimeValue. Вроде как они должны бы помочь в этой задаче(?)

Автор - maverick_77
Дата добавления - 19.07.2015 в 18:06
KSV Дата: Воскресенье, 19.07.2015, 19:11 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Добрый день!
Так?

[p.s.]Только перед первым открытием файла разблокируйте его, а то будет ругаться. (правый клик мыши на файле, выбрать "Свойства" и на вкладке "Общие" нажать кнопку "Разблокировать", если она есть)[/p.s.]

UPD: А если после срабатывания Macros3 нужно оставить возможность его повторных запусков, после ручного запуска Macros2, то замените Macros2 на:

(файл перезалил)
К сообщению приложен файл: AutoRunMacros3.xlsm (15.7 Kb)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Воскресенье, 19.07.2015, 20:43
 
Ответить
СообщениеДобрый день!
Так?

[p.s.]Только перед первым открытием файла разблокируйте его, а то будет ругаться. (правый клик мыши на файле, выбрать "Свойства" и на вкладке "Общие" нажать кнопку "Разблокировать", если она есть)[/p.s.]

UPD: А если после срабатывания Macros3 нужно оставить возможность его повторных запусков, после ручного запуска Macros2, то замените Macros2 на:

(файл перезалил)

Автор - KSV
Дата добавления - 19.07.2015 в 19:11
maverick_77 Дата: Понедельник, 20.07.2015, 07:38 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 39
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
KSV, спасибо за вариант!

Помогите, пожалуйста, разобраться...
1. Macros3 (в Вашем примере) запустился дважды: первый раз во время, полученное при нажатии кнопки, второй - во время, полученное при открытии файла. Можно ли этого избежать?
2. У Вас во втором макросе есть строки:
[vba]
Код
If nTime < NextTime Then Application.OnTime NextTime, "Macros3", , False: NextTime = 0
If NextTime < Now Then NextTime = nTime: Application.OnTime NextTime, "Macros3"
[/vba]
Никак не могу понять, что тут делается.
3. Что делает макрос при закрытии:
[vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
     On Error Resume Next
     Application.OnTime NextTime, "Macros3", , False
End Sub
[/vba]


если нельзя, но очень хочется, то можно!
 
Ответить
СообщениеKSV, спасибо за вариант!

Помогите, пожалуйста, разобраться...
1. Macros3 (в Вашем примере) запустился дважды: первый раз во время, полученное при нажатии кнопки, второй - во время, полученное при открытии файла. Можно ли этого избежать?
2. У Вас во втором макросе есть строки:
[vba]
Код
If nTime < NextTime Then Application.OnTime NextTime, "Macros3", , False: NextTime = 0
If NextTime < Now Then NextTime = nTime: Application.OnTime NextTime, "Macros3"
[/vba]
Никак не могу понять, что тут делается.
3. Что делает макрос при закрытии:
[vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
     On Error Resume Next
     Application.OnTime NextTime, "Macros3", , False
End Sub
[/vba]

Автор - maverick_77
Дата добавления - 20.07.2015 в 07:38
Udik Дата: Понедельник, 20.07.2015, 11:19 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
На мой взгляд по 2п.

если время запуска мак2 + 15 < мак1 +45, то отменить запуск в мак1+45
обнулить время запуска
если время запуска прошло, устанавливаем время запуска мак2+15
запускаем таймер с NextTime

(Двоеточие – чтобы не прописывать каждый оператор в отдельной строке, их можно с помощью двоеточия прописать в одну строку, например: MsgBox "Строка1" : MsgBox "Строка2")
[p.s.]что получится при nTime=NextTime не знаю. В случае nTime>NextTime, просто запускается 2-й таймер


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com


Сообщение отредактировал Udik - Понедельник, 20.07.2015, 11:56
 
Ответить
СообщениеНа мой взгляд по 2п.

если время запуска мак2 + 15 < мак1 +45, то отменить запуск в мак1+45
обнулить время запуска
если время запуска прошло, устанавливаем время запуска мак2+15
запускаем таймер с NextTime

(Двоеточие – чтобы не прописывать каждый оператор в отдельной строке, их можно с помощью двоеточия прописать в одну строку, например: MsgBox "Строка1" : MsgBox "Строка2")
[p.s.]что получится при nTime=NextTime не знаю. В случае nTime>NextTime, просто запускается 2-й таймер

Автор - Udik
Дата добавления - 20.07.2015 в 11:19
KSV Дата: Понедельник, 20.07.2015, 13:42 | Сообщение № 5
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Можно ли этого избежать?

1. Такого и не должно быть. Сейчас там заложена такая логика:
При открытии файла планируется запуск Macros3 через 45 минут. Если запускается Macros2, то он проверяет, какое время наступит раньше - время открытия файла + 45 мин., или время запуска Macros2 + 15 мин. Если время запуска Macros2 + 15 мин. раньше, то отменяет запланированное ранее время (откр+45) и планирует новое время (М2+15). Если время М2+15 наступит позже запланированного ранее откр+45, то никакого перепланирования не происходит и М3 запустится по плану, т.е. во время откр+45.

2. В первой строке, как раз проверяется какое время наступит раньше (откр+45 или М2+15) и в случае необходимости отменяется ранее запланированный запуск М3.
А во второй - проверяется прошло ли время запуска М3 или был ли запуск отменен в пред. строке. И если это так, то и в том, и в другом случае, назначает новое время запуска М2+15 мин.

3. При закрытии файла, отменяет запланированный запуск М3.


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Понедельник, 20.07.2015, 13:44
 
Ответить
Сообщение
Можно ли этого избежать?

1. Такого и не должно быть. Сейчас там заложена такая логика:
При открытии файла планируется запуск Macros3 через 45 минут. Если запускается Macros2, то он проверяет, какое время наступит раньше - время открытия файла + 45 мин., или время запуска Macros2 + 15 мин. Если время запуска Macros2 + 15 мин. раньше, то отменяет запланированное ранее время (откр+45) и планирует новое время (М2+15). Если время М2+15 наступит позже запланированного ранее откр+45, то никакого перепланирования не происходит и М3 запустится по плану, т.е. во время откр+45.

2. В первой строке, как раз проверяется какое время наступит раньше (откр+45 или М2+15) и в случае необходимости отменяется ранее запланированный запуск М3.
А во второй - проверяется прошло ли время запуска М3 или был ли запуск отменен в пред. строке. И если это так, то и в том, и в другом случае, назначает новое время запуска М2+15 мин.

3. При закрытии файла, отменяет запланированный запуск М3.

Автор - KSV
Дата добавления - 20.07.2015 в 13:42
Udik Дата: Понедельник, 20.07.2015, 14:10 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
Да, чет я ошибся, двоеточие позволяет в IF на одной строке писать несколько операторов


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
СообщениеДа, чет я ошибся, двоеточие позволяет в IF на одной строке писать несколько операторов

Автор - Udik
Дата добавления - 20.07.2015 в 14:10
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Запуск макроса по времени (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!