2015-07-21 213 views
1

我正在使用以下代码,但出于某种原因,第二行并未将其转换为实际日期。Excel VBA将字符串日期转换为实际日期

DateStr = Replace(DateStr, "-", "/") 
DateStr = Format(CDate(DateStr), "dd/mm/yyyy") 
DateStr = DateStr + 1 

即使我做的:

Dim RealDate As Date 

DateStr = Replace(DateStr, "-", "/") 
RealDate = Format(CDate(DateStr), "dd/mm/yyyy") 
RealDate = RealDate + 1 

正如您从3线看,我想+1有一天也可能改变一个月或一年可能。

+0

你的输入字符串是什么样的,你的默认日期格式是什么? –

+1

'格式()'只有在没有注意的情况下才会返回一个字符串。它只能用于显示数据,而不能转换。 – PatricK

+0

@TimWilliams'21/07/2015'我的约会如何在英国布局 – Ryflex

回答

2

您无法确定流向何方你应该加1日期。尝试,

DateStr = Format(CDate(DateStr) + 1, "dd/mm/yyyy") 

CDate conversion function是你在哪里得到的数字日期vaue将接受增加了另外一天。

1

第二个对我的作品OK:

Sub Tester() 

    Dim RealDate As Date, DateStr As String 

    DateStr = "7-20-2015" 

    DateStr = Replace(DateStr, "-", "/") 
    RealDate = Format(CDate(DateStr), "dd/mm/yyyy") 
    RealDate = RealDate + 1 

    Debug.Print RealDate '>> 7/21/2015 

End Sub 
+0

也许,但依靠VBA开销将字符串转换为日期不应该推荐练习。 – Jeeped

+0

你应该放弃格式 - 这是误导。变量RealDate是一个日期和格式返回字符串,因此它是多余的。 –

+0

我只是发布了这个来证明OP的代码确实有效,并不是说它是一个好方法...... –