Дата и время переформатирования не меняются после использования макроса VBA

#excel #vba #date #formatting

#excel #vba #Дата #форматирование

Вопрос:

Я пытаюсь взять файл с датой мм / дд / гггг и переформатировать его в гггг-мм-дд и вывести этот новый формат на новый лист, но даже после запуска моего макроса VBS он не меняется, хотя дата рождения указана правильно. Я видел, что есть проблемы с тем, что Excel перезаписывает ваш формат для нас независимо. Есть ли какой-либо способ обойти это? Спасибо!

 birthDate = Trim(CStr(Sheet1.Cells(currRawRow, "F")))
    checkInput = InStr(1, birthDate, "/")

If (checkInput > 0) Then
birthYear = Year(birthDate)
birthMonth = Month(birthDate)
birthDay = Day(birthDate)

birthMonth = Format(CStr(birthMonth), "00")
birthDay = Format(CStr(birthDay), "00")
birthYear = Format(CStr(birthYear), "0000")

birthDate = (birthYear amp; "-" amp; birthMonth amp; "-" amp; birthDay)
  

Комментарии:

1. Просто используйте функцию форматирования. Например. my_string = Format(дата рождения, «гггг-мм-дд»)

2. Это действительно форматирует его, но при выводе отформатированной даты в ячейку на новом листе форматирование не сохраняется.

3. Затем установите формат ячейки в соответствующий формат даты.

4. Да, но для этого потребуется, чтобы любой, кто открывает файл, сделал это, нет? И если он перебирает информацию в ячейках, а затем выводит в большое количество ячеек, как это можно сделать?

5. После того, как вы вставите свои данные на рабочий лист Sheet1.Range("A1:Z1000").NumberFormat = "yyyy-mm-dd" или что вам нужно.

Ответ №1:

Любое число, распознанное Excel как дата, будет отображаться в формате короткой даты региональных настроек панели управления -> Дата и время для того, кто открыл файл.

Чтобы переопределить это, либо: 1) установите формат явно как часть вашего цикла, как предлагает Daimian, либо; 2) принудительно преобразуйте формат в строку, заключив дату в одинарную кавычку.

например, в вашей последней строке изменения кода:

Дата рождения = (Год рождения amp; «-» amp; Месяц рождения amp; «-» amp; День рождения)

Для

Дата рождения = «‘» amp; (Год рождения amp; «-» amp; Месяц рождения amp; «-» amp; День рождения)