【问题标题】:Excel - VBA: formatNumber for date (yyyy-mm-dd) not working with all valuesExcel - VBA:日期格式数字(yyyy-mm-dd)不适用于所有值
【发布时间】:2018-11-29 17:28:49
【问题描述】:

我正在使用 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)
  • 19/12/2018(未预期,预期:2018/12/19)

知道为什么会有差异吗? 请注意,当我双击单元格的格式不正确,并且不做任何更改,按回车键时,格式就会正确应用。

我可以在我的 VBA 中添加什么来让单元格格式像我手动执行时一样被应用?

谢谢!

【问题讨论】:

  • 您的输入值是存储为日期还是文本?
  • 您没有向我们展示实际将信息输入单元格的代码
  • 输入值在格式为日期“aaaa/mm/jj”的单元格中(相当于“yyyy/mm/dd”)我在VBA中指定“yyyy/mm/dd”格式用户需要输入具有相同格式的日期,并且我希望保留复制值的单元格,但它们会更改。并非所有时间都如帖子中详述

标签: excel date formatting vba


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2016-01-11
    • 1970-01-01
    • 2016-11-06
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    • 2014-09-28
    • 2020-10-29
    相关资源
    最近更新 更多