格式(SomeDate,“MM / dd”)=“12-15”在VBA中

我在Excel中编写一个VBAmacros,分析电子表格中的数据并发送电子邮件。 在这个macros中,我必须附加格式为“MM / dd”的date,但输出格式为“MM-dd”。 所以问题是,为什么我的斜线被破折号取代?

为了简单起见,我已经将代码简化为这个例子,并validation了这个例子中存在的问题。

Private Sub Test() Dim Yesterday As Date: Yesterday = DateAdd("d", -1, Now) MsgBox Format(Yesterday, "MM/dd") End Sub 

运行时,消息框显示“12-15”,而不是“12/15”按预期。

我自己并没有使用过VBA,但是我怀疑它正在被当作“当前文化的date分隔符” – 而且你大概是在一种使用date分隔符的文化中执行的。 你可以尝试引用转义斜线,如果你一定要斜线:

 MsgBox Format(Yesterday, "MM\/dd") 

对于原因和解决方法,这都是一个猜测,但至less值得一试。

编辑:由于GSerg纠正如何执行正确的逃避在这种情况下。

这与你在Windows中的文化设置有关。 转到控制面板 – 区域和语言选项 – 自定义区域选项 – date分隔符。 它被设置为“ – ”。 如果你喜欢“/”,你可以在那里改变它。

如果你想格式化date而不pipe你的默认区域设置如何,你可以做Jon Skeet所说的(逃避angular色)。