#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; День рождения)