2011-08-08 104 views
12

我在使用Excel VBA中的日期操作時遇到很大問題。 我有一個窗體有一個文本框,用戶將輸入日期。問題是他可能會以不同的格式輸入(例如,8月1日的1.08.2011或同一天的8/1/11)。現在我想要做的是從他進入文本框的日期中減去一些日子。到目前爲止,我不得不取得成功,我不知道該怎麼做。 我想是這樣的從VBA中的日期減去?

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

哪裏datalivrare是文本框在用戶輸入的日期和4天,我想從該日期減去的數字......我想永遠DD格式.mm.yyyy,無論他們在文本框中輸入什麼內容。

+1

您如何區分8/1/11是8月1日還是1月8日? –

回答

6

最好從日期VBA的加減法,是dateadd()(負號替代品) 也在你的e xample代碼有一個在格式字符串缺少Y(它接受1,2或4 Y,只)

+1

在其他的方式,我會建議更換限制用戶輸入到已知格式,一個蒙面的文本框,如果可能的話,或者乾脆數據驗證 – Einacio

+0

謝謝您的回答! –

5

首先鑄造到日期,然後減去天,然後格式化適當地:

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

感謝您的回答! –

1

這是重要檢查用戶輸入的VBA可以使你首先應該interprit作爲一個日期值:

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的。