【问题标题】:Reformatting date & time does not change after using VBA macro使用 VBA 宏后重新格式化日期和时间不会改变
【发布时间】:2019-04-12 04:45:22
【问题描述】:

我正在尝试获取日期为 mm/dd/yyyy 的文件并将其重新格式化为 yyyy-mm-dd 并将该新格式输出到新工作表,但即使在运行我的 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 & "-" & birthMonth & "-" & birthDay)

【问题讨论】:

  • 使用格式化功能即可。例如。 my_string = Format(birthDate,"yyyy-mm-dd")
  • 这确实格式化了它,但是当将格式化的日期输出到新工作表中的单元格时,它不会保留格式。
  • 然后将单元格的格式设置为合适的日期格式。
  • 是的,但这需要打开文件的任何人都这样做,不是吗?如果它循环遍历长信息的单元格,然后输出到很多单元格,这将如何完成?
  • 在您将数据粘贴到工作表Sheet1.Range("A1:Z1000").NumberFormat = "yyyy-mm-dd" 或您需要的任何内容之后。

标签: excel vba date formatting


【解决方案1】:

任何被 Excel 识别为日期的数字都将以控制面板区域设置的短日期格式显示 ->打开文件的人的日期和时间。

要覆盖它,可以: 1)按照Daimian的建议或将格式明确设置为循环的一部分; 2) 通过在日期前加上单引号来强制格式为字符串。

例如在您的最后一行代码更改中:

birthDate = (birthYear & "-" &birthMonth & "-" &birthDay)

birthDate = "'" & (birthYear & "-" &birthMonth & "-" &birthDay)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多