2017-08-24 746 views
-1

我正在寻找一种方法将字符串转换为VBA中的日期数据类型。我可以使用CDate()函数实现此目的,但它使用自己的隐式算法来解析字符串,我想指定自己的格式来区分“DD/MM/YY”和“MM/DD/YY” , 例如。VBA:从特定格式的字符串读取日期

请注意,与Visual Basic不同,VBA没有DateTime.TryParseExact函数。

ADD:由于一些答案的建议,我可以写我自己的解析器。如果没有内置的解决方案,这将是我的选择。

+0

假设你的意思是'CVDate()'你没有得到更多的选择。 – braX

+0

您可以发布字符串的格式 –

+0

@braX,Microsoft:CVDate与CDate相同,但其返回值的声明类型除外。我使用CDate来获取Date变量。 – AlexVB

回答

0

你可以使用下面的代码

Msgbox Format("24/01/2017","MMM, DD, YYYY") 

这会给你输出Jan, 24, 2017。您可以使用其他格式,当您单击“格式”单元格时可轻松使用该格式。由于

+1

错误的方式。再次阅读问题。 – john

+0

我想这将首先将“24/01/2017”转换为日期数据类型,然后使用“MMM,DD,YYYY”格式化它。我想控制第一阶段,以便我可以指定“01/02/2017”是2月1日,而不是1月2日(或其他方式)。 – AlexVB

1

做这样的事情......

strDate = Split(strDate,"/") 
newstrDate = strDate(1) & "/" & strDate(0) & "/" & strDate(2) 
strDate = CDate(newstrDate) 
1

在这种情况下我会避免CDATE产品总数,而是分裂日期字符串到年,月,日和使用DateSerial(年,月,日)。这样你可以完全控制。