首页 > 解决方案 > 将单元格和格式填入日期 -> 日期显示错误

问题描述

我已经用不同的日期填充了许多单元格。例子:

用 vba 宏填充这些单元格后,我想将格式更改为简短的月份描述(“Jan”、“Feb”、“Mar”等)

所以我用vba把格式改成了“MMM”,但是格式对单元格没有影响。我必须用“F2”进入单元格按回车,然后单元格将其格式更改为“一月,二月等”。

如何确保更改格式后直接更改单元格值?

标签: excelvba

解决方案


您的单元格可能不包含日期,而是包含看起来像日期的字符串。将单元格格式化为包含字符串的日期不会自动将内容转换为日期。由于单元格的内容与数字格式不匹配,因此格式将被忽略。

如果您输入单元格,它在 Excel 中看起来就像您正在编辑内容一样。离开单元格时,Excel 会尝试理解您输入的内容。由于单元格格式设置为日期格式,Excel 假定字符串01.01.2020是日期并将其转换为日期。之后,可以应用数字格式,单元格显示为“Jan”。

因此,您可能必须通过编写真实日期来更改填充单元格的宏。

Dim d As Date, row As Long

d = DateSerial(2020, 1, 1)
For row = 1 To 12
    With ActiveSheet.Cells(row, 1)
        .Value = d
        .NumberFormat = "MMM"
    End With
    d = DateAdd("m", 1, d)
Next

顺便说一句:要检查单元格是否包含字符串、日期或数字,请在即时窗口中键入:

? vartype(activecell.Value)

5= 数字,7= 日期,8= 字符串


推荐阅读