VBA Date + TimeValue не возвращает время - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть дата и время, которые я собираю в дату + время из строк в форме

date_string = "2020-12-30" 'yyyy-mm-dd    
date_code = CDate(date_string)

time_string = "00:00:00" 'hh:mm:ss
time_code = TimeValue(time_string)

date_time = date_code + time_code

Обычно возврат выглядит как 05.01.2019 11:00:00, что я и ожидаю.

Возвращенные значения также все проверяются как ИСТИНА, если я проверяю с IsDate(date_time)

Однако, когда время равно 00:00:00, я получаю только возвращенную дату без добавленного времени. Я не совсем понимаю, так как TimeValue(time_string) возвращает 00:00:00.

Так что это должно быть проблемой при объединении даты и времени со строкой дата + время.

Может кто-нибудь, пожалуйста, просветите меня почему полночь почему-то не существует в Excel VBA или где моя ошибка при создании временного кода?

РЕДАКТИРОВАТЬ:

Я пытаюсь объяснить мою ситуацию немного лучше:

Я делаю эту дату / время в коде, а затем, но результат в массиве в oop. Только позже это записывается в ячейку таблицы.

К тому времени, когда записывается в ячейку, даже пользовательское форматирование ячейки в «ДД.ММ.ГГГГ чч: мм» не показывает время, поскольку оно полностью отсутствует в значении ячейки.

Нужно ли применять формат в точке date_code + time_code?

Ответы [ 2 ]

1 голос
/ 09 апреля 2020

Иногда ответ может быть таким простым. Благодаря Вариатусу и Павлу я проверил форматирование.

Я применил date_time = Format(date_code + time_code, "dd.mm.yyyy hh:mm") в своем коде. Используя этот код, мой код работает, как ожидалось, и 00:00:00 отображается, как ожидается, даже в значениях ячеек таблицы Excel.

0 голосов
/ 09 апреля 2020

Когда вы вводите целое число, например 43930, в ячейке Excel будет записывать число в виде целого числа, так же, как вы его ввели. Затем вы можете отформатировать ячейку как #,##0.000 и, таким образом, отобразить число как 43930.000. Или вы можете отформатировать тот же номер, что и пользовательский dd mmm yyy hh:mm:ss, и отобразить его как 09 апреля 2020 00: 00: 00 . Дело в том, что Excel решил записать число наиболее эффективным способом, в виде целого числа.

Итак, если вы введете DateValue + TimeValue, которые вместе составляют целое число, Excel будет правильно записывать целое число. Формат, в котором это целое число отображается на вашем листе, зависит от формата ячейки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...