Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA格式(<;Date>;,";mmmmm-yy";)无法按预期工作_Excel_Vba_Date Formatting - Fatal编程技术网

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

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

我的excel工作表中有包含日期的单元格

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

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"