【发布时间】:2017-04-24 10:20:31
【问题描述】:
我有一个包含英文格式日期的电子表格:
12 Feb 2015
13 Oct 2016
etc.
但是,由于我的 MS Excel 是法语的,它不会将它们作为日期,而是作为字符串。
我需要对这些值进行一些解析,所以我运行了我的程序,但发生了一些烦人的事情。无论操作系统/微软语言如何,VBA 都以英语设置,获取12 Feb 2015 作为日期,因此,当我将其打印回来时,它会返回法语日期(12-févr-2015,读作12/02/2015)。这会阻止我将该值与之前的 12 Feb 2015 进行比较。
无论如何我可以要求VBA不要主动将我的字符串解释为日期吗?
这是我的代码 + 测试用例的简化版本(但我猜如果在英文 Excel 上运行它你将看不到问题):
- 将字符串
12 Feb 2015放入电子表格的 A1 范围内 -
运行以下代码:
Sub test() myVal = Range("A1").Value Range("A2").Value = myVal End Sub Range("A2") 中的值将是 Excel 语言中的日期,而不是以前的字符串。
注意:我曾想过写Range("A2").Value = "'" & myVal 让值是String 而不是日期,但我以后无法将12 Feb 2015 与@ 进行比较987654331@ 和无论如何,12 Feb 2015 在被myVal = Range("A1").Value 读取时已经成为一个日期。
【问题讨论】:
-
它真的需要
12-févr-2015并使其变为12/05/2015还是这是编写它的技术错误? -
您的示例代码使用 Variant - 如果您想控制解释值的方式,那么您需要控制您正在使用的变量的数据类型。
-
@Vityata 我的意思是您在单元格中看到
12-févr-2015,但如果您按F2 键检查值,它将是12/02/2015。 5 月而不是 2 月是打字错误,马上改!