Format()
- это сложная функция, которая форматирует всевозможные вещи, включая даты и числа.
Когда вы передаете ей строку (которая "7A"
и "7B"
are), он пытается увидеть, можно ли их преобразовать в число (IsNumeric()
возвращает True) или дату (IsDate()
возвращает True). Если они могут, он преобразует их и только потом применяет форматирование.
IsDate()
возвращает True для "7A"
, потому что «7A» является допустимым текстовым представлением значения времени «7 утра» ( 7 утра). Это, в свою очередь, связано с тем, что короткая версия токена форматирования AM/PM
, A/P
возвращает указатель «am / pm» как «a / p»:
? Format$(#07:00:00#, "hA/P") ' => 7A
? Format$(#17:00:00#, "hA/P") ' => 5P
Таким образом, строка «7A» сначала преобразуется в Date
значение #12/30/1899 07:00:00#
(нулевая дата, 7 часов утра). Числовое c представление этого значения - 0.29166667
, которое при форматировании в соответствии с форматом «00» округляется до «00».
«7B», с другой стороны, не является IsDate()
, поэтому Format выводит его без изменений, как это происходит со строками, не имеющими другого значения.
На самом деле , хотя вам вообще не нужна функция Format()
, все, что вам нужно, это
= Right$("00" & Hex$(i), 2)