2016-05-25 4 views
0

Следующая строка кода изменяет не только формат даты, но также изменяет значение даты. Почему это происходит и как я могу избежать этого?Формат VBA Excel 2013 Изменения функции Дата

Код:

rng.Cells(intStartRow, rng.Columns.Count + 1) = _ 
Format(rng.Cells(intStartRow, rng.Columns.Count + 1).Value, "mmm-yy") 

Значение rng.Cells(intStartRow, rng.Columns.Count + 1).Value перед выполнением кода:

enter image description here

Значение rng.Cells(intStartRow, rng.Columns.Count + 1).Value после выполнения кода:

enter image description here

+0

Процедура 'Format' преобразует дату в строку. Запись его обратно в ячейку преобразует его в дату, угадывая формат (который не выполняется должным образом, так как год теперь на 2 цифры). Чтобы сохранить его как строку, вы можете добавить цитату впереди: «Ячейки (...). Value =« '»& Format (...)'. –

ответ

2

Если вы хотите преобразовать в фактическую дату и изменить отображаемый формат, используйте:

With rng.Cells(intStartRow, rng.Columns.Count + 1) 
    .Value = CDate(.Value) 
    .NumberFormat = "mmm-yy" 
End With 
1

Причина, почему это происходит, что информация о дате хранится как десятичное число и отображается в формате даты, примененном к клетка. В вашем коде вы меняете информацию о дате на строку, так как результат Format() всегда является строкой. Душа для решения проблемы является дополнением Rory

Смежные вопросы