Excel VBA 格式 (<Date>, "mmmmm-yy") 未按预期工作

Excel VBA Format(<Date>, "mmmmm-yy") not working as expected

我的 excel sheet 中有包含日期​​的单元格。

这些单元格的显示格式是自定义格式"mmmmm-yy" 因此日期“7/1/16”显示为 "S-16"。这种工作格式适用于 excel sheet,但是,在 VBA 中,我尝试在这些单元格上调用 Format() 函数,它不会产生相同的格式。

Format( <Date_Cell> , "mmmmm-yy")

给予

"April4-16"

以图表为例。

为什么 Format 函数的行为与格式化日期单元格不同?

编辑:根据 office 支持网站,Format a date the way you want,我使用了正确的格式,但没有产生网站声称的结果。

Edit2:正如所选答案指出的那样,单元格日期格式设置与 VBA 格式功能不同。

VBA Format 函数不支持 "mmmmm" 格式作为月份的第一个字母(有关支持的格式,请参阅 documentation)。您的输出实际上解析为 "mmmm"(月份名称),然后是 "m"(月份编号)。如果您只需要月份的第一个字母,则需要手动解析它:

Left$(MonthName(Month(<Date_Cell>)), 1) & "-" & Right$(CStr(Year(<Date_Cell>)), 2)

VBA函数Format and the Excel Date Format格式符号的含义并非100%相同

您可以像这样使用工作表函数 TEXT

Application.Text( <Date_Cell> , "mmmmm-yy")

实现你想要的。

多一个选项:

更改单元格的数字格式:

Range("A1").NumberFormat = "mmmmm-yy"