【发布时间】:2009-03-31 07:55:42
【问题描述】:
vba 中的格式功能正在更改日期。例如,对于格式(“3/12/2009”,“DD/MM/YYYY”),该函数返回 12/03/2009,其中“3/12/2009”是 excel vba 从值为 12 的单元格中读取的内容-Mar-2009,格式为“dd-mmm-yyyy”
【问题讨论】:
vba 中的格式功能正在更改日期。例如,对于格式(“3/12/2009”,“DD/MM/YYYY”),该函数返回 12/03/2009,其中“3/12/2009”是 excel vba 从值为 12 的单元格中读取的内容-Mar-2009,格式为“dd-mmm-yyyy”
【问题讨论】:
不,不是。
如果将日期字符串传递给 Format 函数,它将使用当前的区域设置对其进行解析。您的设置显然是 MM/DD/YYYY,这是美国的默认设置。如果手动设置,没有什么可以阻止 Excel 将日期显示为 DD/MM/YYYY,但默认情况下它会显示 MM/DD/YYYY。
待办事项:停止将日期读取为字符串。将它们读取为日期。
dim d as date
d = activecell.value
【讨论】:
在 Access 中的 VBA 将大多数日期读取为欧洲日期但有些日期为美国时,我自己遇到过几次问题:
这不能正常工作:
myRs.FindFirst ("Date =#" & myDate & "#")
这行得通:
myRs.FindFirst ("Date =#" & Format(myDate, "Long Date") & "#")
长日期(例如 2012 年 1 月 1 日)明显区分月份和日期
【讨论】: