在规划项目时,我们以周为单位给出大致的工期。从今天的下一个星期一开始一个项目。
df1.withColumnRenamed
使用此代码,我可以为单元格分配正确的日期(下周一)。现在我需要从该日期开始下一个星期五12周。 (84天)
为此,我使用了之前的代码并对其进行了一些调整。
Public Function NextMonday() As Date
Dim D As Integer
Dim N As Date
D = Weekday(Now)
N = Now() + (9 - D)
NextMonday = N
End Function
现在,主模块的代码如下;
Public Function NextFriday(AproxDate As Date) As Date
Dim E As Integer
Dim M As Date
E = Weekday(Now)
M = AproxDate + (14 - E)
NextFriday = M
End Function
NextMonday部分工作正常,但是在运行NextFriday时,尝试设置EndDate.Value = NextFriday时会收到“参数不是可选的”。
我似乎找不到此代码的问题。有什么想法吗?
答案 0 :(得分:2)
这不是从函数中获取值的方式:
Call NextFriday(AproxDate)
EndDate.Value = NextFriday
如果您希望函数NextFriday
基于(AproxDate)
返回的值,并且希望该值在单元格EndDate
中,那么(而不是上面的两行)您将使用:
EndDate.Value = NextFriday(AproxDate)
如果您不不希望从中返回值,则仅将Call
与函数一起使用。
您的过程不必要地过于复杂。
信不信由你,这与您的过程完全相同 :
Public Function NextMonday() As Date
NextMonday = Now() + (9 - Weekday(Now))
End Function
Public Function NextFriday(AproxDate As Date) As Date
NextFriday = AproxDate + (14 - Weekday(Now))
End Function
Private Sub Worksheet_Activate()
.Range("C15")= NextMonday
ThisWorkbook.Sheets("Sheet1").Range("C16")= NextFriday(NextMonday + 84)
End Sub
再往前走,这是1个子,与完全相同 :
Private Sub Worksheet_Activate()
With Sheets("Sheet1")
.Range("C15") = Now() + (9 - Weekday(Now))
.Range("C16") = (.Range("C15") + 84) + (14 - Weekday(Now))
End With
End Sub
还要注意的一点是,函数Now
返回当前日期和时间。如果只是您感兴趣的日期,请使用函数Date
。
答案 1 :(得分:1)
您的下星期五函数有2个错误。
1)从星期一到星期五的工作日是+4而不是+5(因此您得到下星期一= +9和下星期五= +(9 + 4))
2)您在下一个星期五代码中使用了now()而不是aproxdate
您下一个星期五的代码应为:
Public Function NextFriday(AproxDate As Date) As Date
Dim E As Integer
Dim M As Date
E = Weekday(AproxDate)
M = AproxDate + (13 - E)
NextFriday = M
End Function
然后您可以像在其他答案中一样调用该函数
答案 2 :(得分:0)
var d = new Date();
d.setDate(d.getDate() + (5+7 - d.getDay()) % 7);
document.write(d);
这是一个Javascript代码,它将在下一个星期五出现,这是唯一一个在星期五失败的情况。