我的电子表格包含英文格式的日期:
12 Feb 2015
13 Oct 2016
etc.
但是,由于我的MS Excel是法语,因此不会将它们视为日期而是字符串。
我需要对这些值进行一些解析,所以我运行我的程序但是会发生烦人的事情。 VBA,无论使用OS / Microsoft语言设置为英语,都会将12 Feb 2015
作为日期,因此,当我将其打印回来时,它会返回法语日期(12-févr-2015
,读为{{1} }})。这使我无法将该值与之前的12/02/2015
进行比较。
无论如何我可以要求VBA不主动将我的字符串解释为约会吗?
以下是我的代码+测试用例的简化版本(但我想如果在英语Excel上运行它将无法看到问题):
12 Feb 2015
放入电子表格的范围A1中运行以下代码:
12 Feb 2015
范围(“A2”)中的值将是Excel语言中的日期,而不是之前的字符串。
注意:我考虑过编写Sub test()
myVal = Range("A1").Value
Range("A2").Value = myVal
End Sub
以使值为Range("A2").Value = "'" & myVal
而不是日期,但它不能让我以后比较{ {1}} String
,12 Feb 2015
成为'12 Feb 2015
读取的日期。
答案 0 :(得分:2)
如果要保留字符串,只需使用Text
代替Value
,并将存储变量定义为字符串。像这样
Sub test()
Dim myVal as String
myVal = Range("A1").Text
Range("A2").Value = myVal
End Sub
Text
是只读的,因此仍然使用Value
写入新单元格。文档中包含Value
和Text
之间差异的示例:https://msdn.microsoft.com/en-us/library/office/ff840217.aspx