Vba DateAdd的语法
我正在尝试使用Excel的DateAdd函数查找下一个工作日的 无论对句点参数使用d、w还是y,它都会提供相同的结果 我尝试了以下代码,在所有3列中都得到了相同的结果Vba DateAdd的语法,vba,excel,Vba,Excel,我正在尝试使用Excel的DateAdd函数查找下一个工作日的 无论对句点参数使用d、w还是y,它都会提供相同的结果 我尝试了以下代码,在所有3列中都得到了相同的结果 Sub test() Dim i As Integer For i = 1 To 9 Debug.Print i; Debug.Print DateAdd("d", i, #9/10/2009#); Debug.Print DateAdd("w", i, #9/10/
Sub test()
Dim i As Integer
For i = 1 To 9
Debug.Print i;
Debug.Print DateAdd("d", i, #9/10/2009#);
Debug.Print DateAdd("w", i, #9/10/2009#);
Debug.Print DateAdd("y", i, #9/10/2009#)
Next i
End Sub
结果:1 11/09/2009 11/09/2009 11/09/2009
2 2009年9月12日2009年9月12日2009年9月12日2009年9月12日
3 2009年9月13日2009年9月13日2009年9月13日2009年9月13日
4 2009年9月14日2009年9月14日2009年9月14日2009年9月14日
5 2009年9月15日2009年9月15日2009年9月15日2009年9月15日
6 2009年9月16日2009年9月16日2009年9月16日2009年9月16日
7/09/2009 17/09/2009 17/09/2009
8/09/2009 18/09/2009 18/09/2009
9 19/09/2009 19/09/2009 19/09/2009 文件摘录: 返回包含已添加指定时间间隔的日期的变量(日期)
Syntax
DateAdd(interval, number, date)
...
interval Required. String expression that is the interval of time you want to add.
....
The interval argument has these settings:
Setting Description
yyyy Year
q Quarter
m Month
y Day of year
d Day
w Weekday
ww Week
...
周为“ww”,年为“yyyy”
更正代码:
Sub test()
Dim i As Integer
For i = 1 To 9
Debug.Print i;
Debug.Print DateAdd("d", i, #9/10/2009#);
Debug.Print DateAdd("ww", i, #9/10/2009#);
Debug.Print DateAdd("yyyy", i, #9/10/2009#)
Next i
End Sub
来自文档:
DateAdd函数的语法为:
DateAdd ( interval, number, date )
interval是要添加的时间/日期间隔。它可以是以下值之一:
Value Explanation
yyyy Year
q Quarter
m Month
y Day of the year
d Day
w Weekday
ww Week
h Hour
n Minute
s Second
number是要添加的间隔数
date是应该添加间隔的日期。您的示例将为今天的三个不同版本添加相同的数字。“d”表示当前日期。“w”表示一周中的某一天,例如1表示星期日(默认值)。“y”代表一年中的某一天。9月16日是今年365年的第259天 为了得到你想要的东西,请执行以下操作:
Sub test()
Dim i As Integer
For i = 1 To 9
Debug.Print i;
Debug.Print DateAdd("d", i, #9/10/2009#) ' adds i days
Debug.Print DateAdd("ww", i, #9/10/2009#) ' adds i weeks
Debug.Print DateAdd("yyyy", i, #9/10/2009#) ' adds i years
Next i
End Sub
产出:
1 9/11/2009 9/17/2009 9/10/2010
2 9/12/2009 9/24/2009 9/10/2011
3 9/13/2009 10/1/2009 9/10/2012
4 9/14/2009 10/8/2009 9/10/2013
5 9/15/2009 10/15/2009 9/10/2014
6 9/16/2009 10/22/2009 9/10/2015
7 9/17/2009 10/29/2009 9/10/2016
8 9/18/2009 11/5/2009 9/10/2017
9 9/19/2009 11/12/2009 9/10/2018
编辑:尽管DateAdd文档的语言很混乱,但还是可以查看一些workday数学。DateAdd不添加工作日。“W”只会增加n天(如您所发现的)。您可以滚动自己的函数,也可以执行以下操作: 在Excel中,转到工具>加载项并打开VBA的分析工具包。 在VBE中,转到工具>参考并将参考设置为atpvbaen.xls。 现在,您可以在VBA中使用WorkDay函数
Public Sub Test()
MsgBox CDate(Workday(Date, 3))
End Sub
DateAdd(“w”没有按预期工作-Microsoft承认了这一点,并在上发布了一个解决方案。我知道ww和yyyy做什么!这不是问题。我想获得下一个工作日(或工作日)@Patrick weekday!=工作日。将工作日添加到日期只会增加到一周中的第二天。例如,将一个工作日添加到星期五会给出一个星期六的日期。这相当于添加一天。你能指出任何可能会提出其他建议的文档吗?对我的答案进行了一点编辑…@Glenn:我在原始问题中添加了一个摘录f从帮助中,第一个参数是一个时间间隔。从这一点上,我理解“d”是添加一天,而“w”是添加一个工作日。否则两者都有是愚蠢的。你能不能只使用基于星期几的条件,而不是DateAdd函数?错。参数代表一个时间间隔,“w”作为工作日,如文档中所述。从文档中…要将天添加到“日期”,可以使用年中的天(“y”)、天(“d”)或工作日(“w”),DateAdd函数不会返回无效日期。以下示例将一个月添加到1月31日:DateAdd(“m”,1,“1995年1月31日”)在这种情况下,DateAdd返回的是95年2月28日,而不是95年2月31日。如果date是96年1月31日,它返回的是96年2月29日,因为1996年是闰年。从我的即时窗口:?DateAdd(“ww”,2,#9/10/2009#)9/24/2009这个问题已经有了一个公认的答案,可以在您的链接中解释这个问题