date格式在Excel VBA中

我已经在VBA中编写了一个很长的过程来操作一个数据集。 其中一部分涉及使用和格式化date,我不能让它正常工作。

下载的初始数据的date格式为“yyyy-mm-ddThh:mm:ssZ” – 例如2014-12-11T04:59:00Z。

然后我把它们转换成英国格式的“dd / mm / yyyy”的date。 遍历所有相关的单元格,我使用以下方法:

initial_date = Range("A1").Value Dim publish_date As Date publish_date = DateValue(Mid(initial_date,9,2) & "/" & Mid(initial_date,6,2) & "/" & Mid(initial_date,1,4)) Range("A1").Value = publish_date 

这似乎工作正常。 单元格自动将格式更改为“date”,当我计算这些date和date在另一列之间的差异,它工作正常。

然后我再次选取这些date并添加到数组中:

 feed(1, 8) = Range("A1") 

然后将这个值转换成另一个数组:

 new_array(7, 1) = feed(1, 8) 

最后,我将新数组的值插入到另一个单元格中。 在使用英国的date格式到目前为止,我现在希望这个值以“mm / dd / yyyy”的forms显示。

 Range("E1") = new_array(7, 1) Range("E1").NumberFormat = "mm/dd/yyyy" 

这是错误的地方。

如上运行代码,date全部显示为“dd / mm / yyyy”格式。 Excel将单元格的格式更改为“自定义”。 find这些和其他date之间的区别作品,所以数据似乎被正确存储,但不显示,因为我想。

如果我更改代码

 Range("E1") = new_array(7, 1) Range("E1").NumberFormat = "dd/mm/yyyy" 

date仍然无法正确显示。 可以用任何方式写的date(即日等于或小于12)显示正确,但实际上是错误的date。 即2014-12-11T04:59:00Z显示为12/11/2014这是我想要的,但Excel认为date是11月12日而不是12月11日。 date为2014年9月29日,不能双向书写,以英国格式显示,但不被Excel正确认可,认为长date应为“2014年9月29日”而非“2014年9月29日”。

当我完全删除格式化行,结果是一样的。

对于相当冗长的说明,我感到抱歉,但是我不清楚Excel和VBA如何处理,存储和格式化date。 如果有人能够启发我什么是错的,我真的很感激!

(请注意,在上面的所有代码片段中,我引用了Range("A1")这是简写​​。事实上,在循环和select值中涉及更多的代码,但我知道这是有效的,所以我不关心。上面的提取只是演示了每个循环中的第一个值会发生什么。)

尝试

 Range("E1").NumberFormat = "mm/dd/yyyy" Range("E1") = Format(new_array(7, 1), "mm/dd/yyyy")