VBA访问日期格式不起作用?

时间:2015-01-20 10:31:12

标签: vba

Chaps我试图获取MM / DD / YYYY格式的日期 - 我的代码编译但仍然坚持默认的DD / MM / YYYY - 听到的是代码。尝试传入一个变量而不是Date,但又没有任何喜悦 - 任何建议?

Dim f As Date
f = Format(Date, "mm/dd/yyyy")

1 个答案:

答案 0 :(得分:0)

Format函数不会格式化日期对象而是格式化字符串。您的代码应该首先将日期类型转换为字符串:

Dim f As Date
f = CStr(f) '<-- conversion into string
f = Format(Date, "mm/dd/yyyy")

修改

确定问题是当我将字符串转换为日期时,它会将字符串的格式删除为标准dd / mm / yyyy - 而不是mm / dd / yyyy

您需要牢记正在阅读您的约会对象:

  • 一个人用眼睛读日期:换句话说,他读一个字符串并从那里需要将其格式化为DD / MM / YYYY或MM / DD / YYYY或其他任何东西。

  • 计算机(您的计算机或其他任何人)读取日期对象,这是继承您的区域设置特征的特定对象。如果您的计算机设置为&#34; DD / MM / YYYY&#34;,请不要担心:在美国,他们将继续在&#34; MM / DD / YYYY&#34;中查看该日期,或者区域设置是。

换句话说,如果您的对象是Date类型,则您不需要/您无法更改机器读取它的格式。如果你嵌入你的代码,为了更好地解释你:

myMonth = Month(myDate)

此变量将返回变量,无论您的区域设置是什么:如果您看到日期为24/01/1990,那么美国人会看到它为01/24/1990,上面的函数无论如何以月为单位返回1

如果您确实需要在代码中使用这样的日期对象,则最好更改日期的区域设置:Control Panel / Time, language and region / Region and language / Short date format --> MM/dd/yyyy

如果您的观点正在处理SQL请求,那么您就是在轨道上:您不需要将格式更改为日期对象,而只需要更改字符串在SQL中使用。如果您需要&#34; mm / DD / yyyy&#34;,那么只需:

myDateStr = Format(CStr(myDate),"mm/DD/yyyy")
mySQL = "SELECT * FROM 'table' WHERE 'date' = " & myDateStr

通过这样做,无论运行代码的用户的日期设置,SQL都将始终相同