2015-11-05 3 views
0

Когда я вставляю новое значение даты в ячейку Excel с помощью VBA, формат даты никогда не будет последовательным и правильным.Как всегда форсировать определенный формат даты в вставленной ячейке?

Как я могу изменить форматирование даты этой ячейки и убедиться, что вставленное значение является реальной датой, а не строковым представлением?

ответ

1

Вот решение:

Прежде всего, если вы хотите, чтобы убедиться, что значение, которое вы вставляете действительно дата сделать простой тест:

If IsDate(valueToInsert) Then 

Затем изменить фактическое номер формата ячейки вы хотите вставить в таблицу (WS):

WS.Range(WS.Cells(row, col).Address).NumberFormat = "dd/MM/yyyy" 'for example 

Все, что вам нужно сделать сейчас, это вставить значение кор прямо в ячейке, которую вы отформатировали выше:

 WS.Cells(row, col) = CDate(Format(valueToInsert, "dd/MM/yyyy")) 'same dateformat 

Ниже приводится полное решение.

If IsDate(valueToInsert) Then 
     WS.Range(WS.Cells(row, col).Address).NumberFormat = "dd/MM/yyyy" 
     WS.Cells(row, col) = CDate(Format(valueToInsert, "dd/MM/yyyy")) 
    Else 
     WS.Cells(row, col) = valueToInsert 
    End If 

Я надеюсь, что это может помочь кому-то, как это мне помогло :)

0

Установите формат номера диапазона.

Sheet1.Range("A2").NumberFormat = "yyyy-mm-dd" 

Затем форматировать данные собираются в

szDate = "1/1/2001" 
Sheet1.Range("A2").Valeu = Format(szDate, "yyyy-mm-dd") 

в ГЭТ точный формат, который вы хотите вы можете записать макрос в то время как вы установите один через правый клик -.> Инструменты форматирования.

+0

Здравствуйте MatthewD спасибо за быстрый ответ. Так я раньше его кодировал, но это не сработало. Я должен был сделать дополнительный шаг и фактически преобразовать szDate в Date, используя CDate. – dagadbm

+0

Вы можете попробовать объявить его как дату. Dim dDate в качестве даты. Это может спасти конверт. – MatthewD