格式化函数vba更改date

vba中的格式化function正在改变date。 例如对于格式(“3/12/2009”,“DD / MM / YYYY”),函数返回12/03/2009其中“3/12/2009”是excel vba从值为12 – 2009年3月,格式为“dd-mmm-yyyy”

不,这不对。

如果将一个datestring传递给Format函数,它将使用当前的区域设置来parsing它。 您的设置显然是MM / DD / YYYY,这是美国的默认设置。 如果手动设置,则不会阻止Excel将date显示为DD / MM / YYYY,但默认情况下会显示MM / DD / YYYY。

要做的事:停止阅读date作为string。 阅读date。

dim d as date d = activecell.value 

有几次问题我自己在Access中的VBA大部分date作为europian,但一些如美国:

这不能正常工作:

 myRs.FindFirst ("Date =#" & myDate & "#") 

这工作:

 myRs.FindFirst ("Date =#" & Format(myDate, "Long Date") & "#") 

长的date(例如2012年1月1日)明显地使得月份和date之间的差异