0

我有几个单元格可以使用“FormatDatetime”函数填写日期,

代码:

Range("AX1") = FormatDateTime((Docx.getAttribute("r1ed")))
Range("AX2") = FormatDateTime((Docx.getAttribute("r2ed")))
Range("AX3") = FormatDateTime((Docx.getAttribute("r3ed")))
Range("AX4") = FormatDateTime((Docx.getAttribute("r4ed")))

如果日期用“.”分隔 所有单元格都将显示为“12.1.2013”​​,但如果我更改以“-”分隔的系统日期格式,“AX4”显示日期仍为“12.1.2013”​​。但其他显示正确。

我需要解决这个问题,因为我稍后在 VBA 中使用这些日期进行计算。

请提出一些答案。

4

1 回答 1

0

我认为你的问题是FormatDateTime()返回一个字符串,改为DateValue()改为。如果 return fromDocx.getAttribute()包含点,您需要先用斜线替换它们。

所以;

'[AX1] is the same as Range("AX1")
[AX1] = DateValue(Docx.getAttribute("r1ed"))
[AX2] = DateValue(Docx.getAttribute("r2ed"))
[AX3] = DateValue(Docx.getAttribute("r3ed"))
[AX4] = DateValue(Docx.getAttribute("r4ed"))

或者,如果有点;

[AX1] = DateValue(Replace(Docx.getAttribute("r1ed"), ".", "/"))
[AX2] = DateValue(Replace(Docx.getAttribute("r2ed"), ".", "/"))
[AX3] = DateValue(Replace(Docx.getAttribute("r3ed"), ".", "/"))
[AX4] = DateValue(Replace(Docx.getAttribute("r4ed"), ".", "/"))

如果这不能解决问题,请您发布有关Docx.getAttribute()返回内容的更多信息。


编辑:另外,知道您需要单元格包含的格式会有所帮助 - 我假设正确的日期是可以接受的 - 您可能需要一个带有特定格式日期的字符串。如果是这种情况,您可以用类似的东西包装上面的内容;

[AX1] = Format(DateValue(Docx.getAttribute("r1ed")), "dd/mm/yyyy")

可能FormatDateTime()是背叛了你,Format()可能更灵活

于 2017-03-11T15:22:12.863 回答