Excel-VBA:日期(yyyy-mm-dd)的formatNumber不适用于所有值

时间:2018-06-20 14:27:56

标签: excel excel-vba date formatting vba

我正在使用VBA根据同一XLS文件中的其他工作表生成XLS工作表。 这是非常基本的,除了以下内容外,所有作品都可以使用:

varSheetGeneratedCSV.Range("E" & j).NumberFormat = "yyyy/mm/dd;@"
varSheetGeneratedCSV.Range("F" & j).NumberFormat = "yyyy/mm/dd;@"

我传递的值是从工作表的单元格中选择的,这些单元格采用以下格式设置:

  • 自定义:aaaa / mm / jj(法语语言环境,相当于yyyy / mm / dd)

工作表在E和F列的单元格中获得期望值(j是循环索引)。

但这是我的结果,取决于我无法确定的内容,可以吗?

输入:

  • 开始:2011/12/01
  • 末尾:2037/12/31

结果:

  • 2011/12/01(预期)
  • 31/12/2037(未预期,预计:2037/12/31)

输入:

  • 开始:2028/06/19
  • 结束时间:2018/12/9

结果:

  • 19/06/2028(未预期,预期:2028/06/19)
  • 2018年12月19日(未预期,预计:2018/12/19)

有人知道为什么会有区别吗? 请注意,当我双击单元格格式不正确,并且不做任何更改就按Enter键,则格式将正确应用。

我可以在我的VBA中添加些什么,以获取像手动进行操作一样要应用的单元格格式?

谢谢!

1 个答案:

答案 0 :(得分:0)

我设法通过日期函数生成日期来使其工作:

varSheetGeneratedCSV.Range("E" & j) = Year(varStartDate) & "/" & Month(varStartDate) & "/" & Day(varStartDate)

这每次都会输出正确的值。