写入工作表时的自定义格式日期

时间:2018-10-11 05:37:23

标签: excel vba excel-vba date-formatting

将日期复制到空白/未格式化行上的工作表时,我无法正确格式化日期。

我正在使用宏将值从一张纸复制到另一张纸,并且我希望一列包含运行脚本的当前日期。

这是我所拥有的:

records_list.Worksheets("Sheet1").Range("J" & records_row_number) = 
Format(Date, "ddmmmyy")

这是正确的,因为它将日期值放入目标表(records_list)。但是,格式的输入格式为“ d-mmm-yy”,这意味着该格式包含破折号并在几天内删除了前导零。

我想要的日期格式为09Oct18,但是显示为9-10月18

我无法为自己的一生弄清楚它为什么这样做或如何防止它。我在其他网站上尝试了很多有关日期格式的建议,但没有任何效果。但是,如果我进入单元格格式并将其强制为“ ddmmmyy”,则它可以正确显示,但是,我想避免对工作表中的数千行进行预格式化,以便更快地打开/保存。

谢谢!

2 个答案:

答案 0 :(得分:0)

Excel在选择如何显示日期时使用范围的数字格式,而不是日期中写入日期的格式。要更改范围的数字格式,您可以执行以下操作:

With records_list.Worksheets("Sheet1").Range("J" & records_row_number)
    .Value = Date
    .NumberFormat = "ddmmmyy"
End With

答案 1 :(得分:-1)

这需要分两步完成。首先输入值,然后设置数字格式:

records_list.Worksheets("Sheet1").Range("J" & records_row_number).Value = Date
records_list.Worksheets("Sheet1").Range("J" & records_row_number).NumberFormat = "ddmmmyy"

甚至可以更好地配合使用:

With records_list.Worksheets("Sheet1").Range("J" & records_row_number)
    .Value = Date
    .NumberFormat = "ddmmmyy"
End With