我有这段代码只是挂在位于VBA项目中的工作表中,该工作表会自动填充excel表单的日期。我一直在修补它,以便当个人在I6单元格中输入名称时填充日期。在第8行,
r.Offset(0, 12).Value = Date + 1
我添加了1以填充第二天的日期。现在,我想进一步说明一下如果输入星期五,则输入下一个工作日的日期。因此,每个工作日,当用户在单元格I6中输入数据时,它将下一个工作日的日期插入到同一范围内12列的单元格中,但星期五除外,在星期五,我希望将日期填充为下周的星期一。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim I As Range, AF As Range, Inte As Range, r As Range
Set I = Range("I6")
Set Inte = Intersect(I, Target)
If Inte Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each r In Inte
r.Offset(0, 12).Value = Date + 1
Next r
Application.EnableEvents = True
End Sub
我需要if语句吗?如果是这样,我可以将其放入For循环(?)中。我不是编码员,我需要这样做来简化我的工作。任何指导将不胜感激。
答案 0 :(得分:3)
已经有一个跳过周末的功能。无需重新发明轮子。只需使用WORKDAY
函数
r.Offset(0, 12) = Application.WorksheetFunction.Workday(Date, 1)
答案 1 :(得分:2)
添加一条If
语句以检查今天是否是星期五:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim I As Range, AF As Range, Inte As Range, r As Range
Set I = Range("I6")
Set Inte = Intersect(I, Target)
If Inte Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each r In Inte
If Format(Date, "dddd") = "Friday" Then
r.Offset(0, 12).Value = Date + 3
Else
r.Offset(0, 12).Value = Date + 1
End If
Next r
Application.EnableEvents = True
End Sub