TimeSerial Function
возвращает значение Variant/Date
, что в случае TimeSerial(0, -10, 0)
является отрицательным
Результат TimeSerial(0, -10, 0)
, как показано на Local Window
или при печати в Immediate Window
выглядит положительный же, как TimeSerial(0, 10, 0)
(попробуйте в немедленное окно):
debug.Print "TimeSerial(0, -10, 0) = " TimeSerial(0, -10, 0) vblf _ "TimeSerial(0, 10, 0) = " TimeSerial(0, 10, 0)
Однако простой тест с использованием IF
подтверждает:
а) Они разные (попробуйте в ближайшем окне):
debug.Print TimeSerial(0, -10, 0) = TimeSerial(0, 10, 0)
б) Отрицательное значение TimeSerial(0, -10, 0)
(попробуйте в немедленное окно):
debug.Print TimeSerial(0, -10, 0) < 0
Для получения 23:50:00
можно использовать:
debug.Print TimeSerial(24, -10, 0)
или
debug.Print TimeSerial(24, -9, -60)
среди других
Для получения дополнительной информации см: TimeSerial Function и Data Type Summary и
Не положительный, но я не думаю, что TimeSerial рассекречивать вокруг. Что происходит, когда вы пытаетесь «TimeSerial (23, 70, 0)»? Готов поспорить, вы тоже не закончили 0: 10: 0. –
У вас нет компонента даты, и у вас нет отрицательного времени. Лично я предпочел бы, чтобы он выдавал ошибку, но я предполагаю, что это функция функции [TimeSerial] (https://msdn.microsoft.com/en-us/library/ws25fd2z.aspx) для обеспечения результата «наилучшего предположения» , 'TimeSerial (23, -10,0)' работает, потому что принимать 10 минут от 23 часов не приводит к отрицательному результату. @KenWhite - На самом деле вы приедете в '12/31/1899 12:10:00 AM'. – Jeeped
@ Jeeped: Думаю, я выиграю эту ставку. :-) Да, я знаком с базовой датой для COM/VBA. Я хотел, чтобы плакат узнал об этом. –