从VBA中的date减去?

我在使用Excel VBA中的date操作时遇到很大问题。 我有一个窗体,有一个文本框,用户将inputdate。 问题是他可能以不同的格式input(例如,8月1日的1.08.2011或同一天的8/1/11)。 现在我想要做的是从他进入文本框的date中减去一些日子。 到目前为止,我不得不取得成功,我不知道该怎么做。 我尝试了这样的事情

Format((Format(Me.datalivrare.Value, "dd.mm.yyy") - 4), "dd.mm.yyyy") 

哪里datalivrare是用户inputdate的文本框,4是我想从该date减去的天数…我希望格式总是dd.mm.yyyy无论他们在该文本框中input。

我build议看看VBA的DateAdd函数

http://www.techonthenet.com/excel/formulas/dateadd.php

http://office.microsoft.com/en-us/access-help/dateadd-function-HA001228810.aspx

你可以做到以下几点:

 Format(DateAdd("d", -4, CDate(Me.datalivrare.Value)), "dd.mm.yyyy") 

在vba上添加和减去date的最好方法是使用dateadd() (与负数replace) ,在示例代码中,格式化string中缺lessy(仅接受1,2或4 y)

首先投射到date,然后减去天数,然后适当地格式化:

 Format(DateAdd("d", -4, CDate(Me.datalivrare.Value)), "dd.mm.yyyy") 

检查用户是否input了一个VBA可以作为date间隔的值是很重要的,所以首先你应该:

 If isDate(Me.datalivrare.Value) Then str_Date = Format(DateAdd("d", -4, CDate(Me.datalivrare.Value)), "dd.mm.yyyy") Else MsgBox "Not a valid date value", vbCritical + vbOkOnly, "Invalid Entry" End If 

我认为bluefeet的答案迄今为止的信息最多,我借用了使用DateAdd和CDate。