Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Как в VBA сравнить текущее время с определенным.
 
Добрый вечер! Коллеги требуется помощь. Столкнулся с такой проблемой. Хочу задать условие: При запуске Макроса 2 Ексель проверяет текущее время (сверяя его с поставленным) и в случае чего выдает по условию или MsgBox или же запускает макрос 1. На данное время (22:42) макрос почему то выдает MsgBox, вместо исполнения макроса.
Код
Sub Макрос1()Dim iLastRow As Long
iLastRow = Cells(Rows.Count, 2).End(xlUp).Row
Cells(iLastRow + 1, 2).Select
ActiveCell.FormulaR1C1 = "1"
Application.Run "Макрос2"
End Sub
Sub Макрос2()
If Now < "22:31:00" Then
MsgBox "СТОП"
Else
TimeToRun = Now + TimeValue("00:00:15")
    Application.OnTime TimeToRun, "Макрос1"
End If
End Sub
Изменено: One6 - 13 Окт 2019 11:31:25
 
Вы сравниваете строки. Остальное, после правки оформления Вашего сообщения.
 
1. Название темы ни о чём. Предложите новое - модераторы поменяют.
2. Код следует оформлять соответствующим тегом: ищите такую кнопку (см. скрин) и исправьте своё сообщение.
Тег VBA.jpg (19.2 КБ)
 
Цитата
БМВ написал:
Вы сравниваете строки. Остальное, после правки оформления Вашего сообщения.
Вроде все поправил, вопрос остался открытым - вчера так и не разобрался (не смог найти ответы на других форумах)
 
Функция VBA Now возвращает текущую дату и время, функция Time - только время.
Код
If Time < TimeValue("22:31:00") Then
Владимир
 
Цитата
sokol92 написал:
Функция VBA Now возвращает текущую дату и время, функция Time - только время.
Владимир добрый день! Все равно не работает - после 1 запуска не может включить заново Макрос2. (Пишет что его просто нету, хоть в VBA он так подписан)
 
Ща Cоколик по доброте душевной подзатыльник циклом заработает :-)
Цитата
Юрий М написал:
1. Название темы ни о чём. Предложите новое - модераторы поменяют.
 
Цитата
One6 написал:
Все равно не работает
Не берите плохой пример с локализаторов Excel - пишите имена функций и переменных латынью.
Кроме того, всегда используйте Option Explicit. Обратите также внимание на форму записи Application.Ontime

Код
Option Explicit
Sub Macro1()
    Dim iLastRow As Long
    iLastRow = Cells(Rows.Count, 2).End(xlUp).Row
    Cells(iLastRow + 1, 2).Select
    ActiveCell.FormulaR1C1 = "1"
    Application.Run "Macro2"
End Sub
Sub Macro2()
    Dim TimeToRun
    If Time < TimeValue("19:44:00") Then
        MsgBox "СТОП"
    Else
        TimeToRun = Now + TimeValue("00:00:15")
        Application.OnTime TimeToRun, ThisWorkbook.Name & "!Macro1"
    End If
End Sub

Для МОДЕРАТОРОВ. Тема: Как в VBA сравнить текущее время с определенным.
Владимир
 
Эх Владимир, хардкод …. :-)

Код
Const MyTime As DateTime = #7:44:00 PM#

If Time < MyTime Then
 
Цитата
One6 написал:
Как в VBA сравнить текущее время с определенным.
используйте операторы сравнения
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Страницы: 1
Читают тему (гостей: 1)
Наверх