VBA:将英文日期格式设为字符串

时间:2017-04-24 10:20:32

标签: vba excel-vba date excel

我的电子表格包含英文格式的日期:

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上运行它将无法看到问题):

  1. 将字符串12 Feb 2015放入电子表格的范围A1中
  2. 运行以下代码:

    12 Feb 2015
  3. 范围(“A2”)中的值将是Excel语言中的日期,而不是之前的字符串。

  4. 注意:我考虑过编写Sub test() myVal = Range("A1").Value Range("A2").Value = myVal End Sub 以使值为Range("A2").Value = "'" & myVal而不是日期,但它不能让我以后比较{ {1}} String12 Feb 2015成为'12 Feb 2015读取的日期。

1 个答案:

答案 0 :(得分:2)

如果要保留字符串,只需使用Text代替Value,并将存储变量定义为字符串。像这样

Sub test()
    Dim myVal as String
    myVal = Range("A1").Text
    Range("A2").Value = myVal
End Sub

Text是只读的,因此仍然使用Value写入新单元格。文档中包含ValueText之间差异的示例:https://msdn.microsoft.com/en-us/library/office/ff840217.aspx