我的Excel工作表中包含一个包含日期的单元格。
这些单元格的显示格式是自定义格式" mmmmm-yy" 这样的日期" 7/1/16"显示为" S-16"。这种工作格式适用于Excel工作表,但是,在VBA中我尝试在这些单元格上调用Format()函数,它不会产生相同的格式。
Format( <Date_Cell> , "mmmmm-yy")
给予
"April4-16"
例如,在图表上。
为什么Format
函数的行为与格式化日期单元格的行为不相同?
编辑:根据办公室支持网站Format a date the way you want,我使用了正确的格式,但它没有产生网站声称的结果。
Edit2:关闭单元格日期格式的工作方式与VBA格式功能不同,因为所选答案指出了。
答案 0 :(得分:4)
VBA Format
功能不支持&#34; mmmmm&#34;格式为当月的第一个字母(有关支持的格式,请参阅documentation)。您的输出实际上正在解析为&#34; mmmm&#34; (月份名称),然后&#34; m&#34; (月号)。如果您只需要当月的第一个字母,则需要手动解析:
Left$(MonthName(Month(<Date_Cell>)), 1) & "-" & Right$(CStr(Year(<Date_Cell>)), 2)
答案 1 :(得分:4)
VBA函数Format和Excel Date Format的格式符号的含义并非完全相同。
您可以使用工作表函数TEXT
,如:
Application.Text( <Date_Cell> , "mmmmm-yy")
实现你想要的目标。
答案 2 :(得分:2)
还有一个选择:
更改单元格的数字格式:
Range("A1").NumberFormat = "mmmmm-yy"