我在使用Excel VBA中的日期操作时遇到大问题。 我有一个具有文本框的表单,用户将在其中输入日期。问题是他可能以不同的格式输入(例如,8月1日的1.08.2011,或同一天的8/1/11)。现在我想要做的是从他输入TextBox的那一天减去几天。到目前为止我不得不成功,我不知道该怎么做。 我试过这样的事情
Format((Format(Me.datalivrare.Value, "dd.mm.yyy") - 4), "dd.mm.yyyy")
其中datalivrare是用户输入日期的文本框,4是我想从该日期减去的天数...我希望格式始终为dd.mm.yyyy,无论他们输入的是什么那个文本框。
答案 0 :(得分:26)
我建议查看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")
答案 1 :(得分:6)
最好在vba上添加和减去日期dateadd()(带有负数的减法) 此外,在您的示例代码中,格式字符串上缺少y(仅接受1,2或4 y)
答案 2 :(得分:6)
首先转换为日期,然后减去天数,然后适当格式化:
Format(DateAdd("d", -4, CDate(Me.datalivrare.Value)), "dd.mm.yyyy")
答案 3 :(得分:1)
重要的是检查用户是否输入了VBA可以作为日期插入的值,所以首先应该:
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。
答案 4 :(得分:0)
只是一个简单的答案,因为很多人没有使用 OP 的代码。
例如:减去 4 天
https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/dateadd-function
Sub DateTest()
Dim DateVar As Date
DateVar = DateAdd("d", -4, Date)
Debug.Print DateVar
End Sub