Excel VBA格式(<;Date>;,";mmmmm-yy";)无法按预期工作
我的excel工作表中有包含日期的单元格 这些单元格的显示格式为自定义格式“mmmmm-yy” 因此,日期“7/1/16”显示为“S-16”。这种格式适用于excel工作表,但是,在VBA中,我尝试在这些单元格上调用format()函数,它不会产生相同的格式Excel VBA格式(<;Date>;,";mmmmm-yy";)无法按预期工作,excel,vba,date-formatting,Excel,Vba,Date Formatting,我的excel工作表中有包含日期的单元格 这些单元格的显示格式为自定义格式“mmmmm-yy” 因此,日期“7/1/16”显示为“S-16”。这种格式适用于excel工作表,但是,在VBA中,我尝试在这些单元格上调用format()函数,它不会产生相同的格式 Format( <Date_Cell> , "mmmmm-yy") 例如,在图表上 为什么Format函数的行为与格式化日期单元格不同 编辑:根据office支持网站,我使用了正确的格式,但没有产生网站声称应该产生的结果 Ed
Format( <Date_Cell> , "mmmmm-yy")
例如,在图表上
为什么Format
函数的行为与格式化日期单元格不同
编辑:根据office支持网站,我使用了正确的格式,但没有产生网站声称应该产生的结果
Edit2:正如所选答案所指出的,单元格日期格式的工作方式与VBA Format函数不同。VBA
Format
函数不支持将“mmmmm”格式作为月份的第一个字母(有关支持的格式,请参阅)。您的输出实际上解析为“mmmm”(月名),然后是“m”(月号)。如果您只需要当月的第一个字母,则需要手动解析:
Left$(MonthName(Month(<Date_Cell>)), 1) & "-" & Right$(CStr(Year(<Date_Cell>)), 2)
Left$(MonthName(Month()),1)和“-”与Right$(CStr(Year()),2)
VBA函数和的格式符号的含义并非100%相同
您可以使用工作表函数TEXT
如下:
Application.Text( <Date_Cell> , "mmmmm-yy")
Application.Text(,“mmmmmm-yy”)
实现您的目标。还有一个选项:
更改单元格的数字格式:
Range("A1").NumberFormat = "mmmmm-yy"
您在月份部分有一个过多的
m
,仅使用4。否,这将生成完整的月份名称“June-16”与“J-16”。根据office支持网站,5'm是正确的
Range("A1").NumberFormat = "mmmmm-yy"