Пользовательское форматирование даты при записи на лист - PullRequest
0 голосов
/ 11 октября 2018

У меня проблема с получением правильного формата даты при копировании на лист в пустой / неотформатированной строке.

Я использую макрос для копирования значений с одного листа на другой и хочуодин столбец, содержащий текущую дату запуска сценария.

Вот что у меня есть:

records_list.Worksheets("Sheet1").Range("J" & records_row_number) = 
Format(Date, "ddmmmyy")

Это работает правильно, потому что оно помещает значение даты в целевой лист (records_list).Однако форматирование выглядит как «d-mmm-yy», что означает, что оно содержит тире и опускает ведущий ноль в днях.

Я хочу дату в формате 09Oct18, но она отображается как 9-окт-18

Я не могу понять, почему она это делает или как ее предотвратить.Я пробовал много предложений по форматированию даты, которые я видел на других сайтах, но ничего не работает.Если я зайду в форматирование ячейки и введу «ddmmmyy», оно будет отображаться правильно, однако я хочу избежать предварительного форматирования тысяч строк на листе, чтобы он открывался / сохранялся быстрее.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Это нужно сделать в два этапа.Сначала введите значение, а затем установите числовой формат:

records_list.Worksheets("Sheet1").Range("J" & records_row_number).Value = Date
records_list.Worksheets("Sheet1").Range("J" & records_row_number).NumberFormat = "ddmmmyy"

или даже лучше, используя С:

With records_list.Worksheets("Sheet1").Range("J" & records_row_number)
    .Value = Date
    .NumberFormat = "ddmmmyy"
End With
0 голосов
/ 11 октября 2018

Excel использует числовой формат диапазона при выборе способа отображения даты, а не формата, в котором она была записана для диапазона. Чтобы изменить числовой формат диапазона, вы можете сделать что-то вроде:

With records_list.Worksheets("Sheet1").Range("J" & records_row_number)
    .Value = Date
    .NumberFormat = "ddmmmyy"
End With
...