Когда вы вызываете функцию TimeValue , она ожидает, что вы передадите ей строку, которую можно интерпретировать как значение времени.Когда вы сохраняете значение времени в ячейке рабочего листа, оно преобразует это значение в доли за 24 часа и сохраняет его как число с плавающей запятой.
Таким образом, значение «12:00» в ячейке рабочего листа равнохранится как «0.5», потому что он рассматривается как 12 часов.Когда вы затем вызываете TimeValue
для значения этой ячейки, это эквивалентно TimeValue(0.5)
.Переданный аргумент не является строкой, которую можно интерпретировать как значение времени, и, таким образом, вы получаете несоответствие типов.
Кроме того, для сохранения значения 12 минут и нулевых секунд в ячейке необходимо ввести«00:12:00» - т.е. использовать формат чч: мм: сс.Если вы укажете только два значения, это будет интерпретироваться как формат чч: мм, который можно проверить, введя значение, например «45:30».
Чтобы реально сравнить значения, вы можете попробовать следующее (используяr1 и r2 для представления двух ячеек, которые вы хотите сравнить):
Это простейшее сравнение, но оно может дать неверные результаты, если любой изячейки отформатированы как текст и хранят значение времени в виде строки, а не числа с плавающей запятой
DateDiff("s", r1.Value, r2.Value) > 0
функция DateDiff сообщает, сколько единиц времени прошло между двумя значениями даты / времени - параметр «s» указывает, что мы хотим считать секунды.
Положительный результат указывает, что вторая дата / время были позже, чем первое.Отрицательный результат означает, что вторая дата / время были раньше, чем первая.Эта функция может успешно сравнивать значения с плавающей запятой со строковыми значениями - DateDiff("s",8.33333333333333E-03,"00:11:40")
вернет -20, как и ожидалось.
TimeValue(r1.Text) < TimeValue(r2.Text)
При этом используется отображаемый текстячейка листа, а не сохраненное значение.Если отображаемый текст изменяется, сравнение может быть неверным.Если формат ячейки был изменен с общего на числовой, в результате чего текст изменится с «00:12:00» на «0,008333», то может произойти ошибка несоответствия типов
Все три решения могут работать в некоторыхобстоятельства, но я бы склонялся к использованию DateDiff
.Подобные сравнения предназначены для этой функции