Страницы: 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.10.2019 11:31:25
 
Вы сравниваете строки. Остальное, после правки оформления Вашего сообщения.
По вопросам из тем форума, личку не читаю.
 
1. Название темы ни о чём. Предложите новое - модераторы поменяют.
2. Код следует оформлять соответствующим тегом: ищите такую кнопку (см. скрин) и исправьте своё сообщение.
 
Цитата
БМВ написал:
Вы сравниваете строки. Остальное, после правки оформления Вашего сообщения.
Вроде все поправил, вопрос остался открытым - вчера так и не разобрался (не смог найти ответы на других форумах)
 
Функция VBA Now возвращает текущую дату и время, функция Time - только время.
Код
If Time < TimeValue("22:31:00") Then
Владимир
 
Владимир добрый день! Все равно не работает - после 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 сравнить текущее время с определенным.
используйте операторы сравнения
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Добрый день. Вопрос по теме.
Будет ли корректно работать макрос сравнения текущего времени с заданным, если я сделаю сравнение по примеру:
Код
if Time > TimeValue("23:00:00") And Time < TimeValue("06:00:00")

Т.е. ночью мне необходимо, чтобы в данный if заходила проверка

 
Цитата
Дмитрий Попов: Будет ли корректно работать
попробуйте попробовать
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Дмитрий Попов,
заменим время 23 часа и 6 часов на числа 23 и 6
а теперь назовите такое число, которое будет одновременно больше 23 и меньше 6! знаете такое? если знаете несколько, называйте все такие числа))
if Time > TimeValue("23:00:00") Or Time < TimeValue("06:00:00")
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Страницы: 1
Наверх