Страницы: 1
RSS
VBS скрипт не выполняет условие запуска Msgbox
 
Добрый день.
Мне нужно, чтобы при запуске, скрипт:
1) Если текущее время больше или равно, чем 09:20:00, то - сразу выдавал напоминание
2) Если текущее время меньше, чем 09:20:00, то - выдавал напоминание при наступлении 09:20:00

Запускаю скрипт (при этом текущее время 10 утра), даёт ошибку (см.скрин)
Код
time1=TimeValue("09:20:00")

tekst1="Напоминание №1"
x=1000*60*60*24

If NowTime >= time1 Then
    Msgbox tekst1, 64, tekst1
Else
    Wscript.Sleep CDbl(time1-TimeValue(Now))*x
    Msgbox tekst1, 64, tekst1
End If

В чём причина?

ИМХО, ошибка возникает из-за того, что компьютер пытается как бы прочитать и высчитать 2-ю часть условия (хотя он должен перейти в эту часть только если текущее время меньше, чем 09:20:00) и возникает ошибка отрицательного времени.
Как лечить?
Изменено: Бахтиёр - 22.02.2022 11:31:18
 
Цитата
Бахтиёр написал:
хотя он должен перейти в эту часть только если текущее время меньше, чем 09:20:00)
Почему?
Что такое NowTime? Нигде не вижу назначения значений этой переменной. А значит она равна 0. А 0 не может быть больше или равен хоть чему-то числовому.
В итоге происходит безусловный переход к Else и в результате вычисления скорее всего в строке 9 получаете отрицательное значение, т.к. вычитаете из меньшего большее.
Изменено: Дмитрий(The_Prist) Щербаков - 22.02.2022 11:49:30
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
написал:
If NowTime >= time1 Then
Замените NowTime (вроде в VBS нет такой функции) просто на Time - системное время. А Now выдаёт дату и время.
Не стреляйте в тапера - он играет как может.
 
Спасибо, такой код работает:
Код
time1=TimeValue("09:20:00")
 
tekst1="Напоминание №1"
x=1000*60*60*24
 
If Time >= time1 Then
    Msgbox tekst1, 64, tekst1
Else
    Wscript.Sleep CDbl(time1-Time)*x
    Msgbox tekst1, 64, tekst1
End If
 
Цитата
Дмитрий(The_Prist) Щербаков: Что такое NowTime?
Цитата
Ts.Soft: вроде в VBS нет такой функции
Бахтиёр, это НЕ штатная функция VBA, откуда вы вообще её взяли?
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
написал:
откуда вы вообще её взяли?
Это была моя переменная ))). Оказалось по ходу изменений кода я запутался, вопрос решён кодом из поста №4
 
Бахтиёр, я понял, что решён, просто было интересно  :)
Вдруг что-то новое в VBA по подписке появилось  :D
Изменено: Jack Famous - 22.02.2022 14:29:46
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Msgbox  и VBS не вяжутся.
или Wscript.echo , я предподчитаю его ибо если в режиме пакетном, то это вывод в консоль или куда перенаправлено.
или http://scriptcoding.ru/2013/06/25/wscript-shell-popup/
или через shell вызывать  msg c параметрами.
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ: wscript-shell-popup
эту крутую штуку Владимир "сокол" как-то показывал - в ней и юникод виден нормально, и автозакрытие есть, и ешё прибамбасы разные  8)
Изменено: Jack Famous - 22.02.2022 14:33:35
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Наверх