VBA Excel 自动填充第二天日期的代码,但仅适用于工作日

VBA Excel code that autopopulates the next day's date, but only for weekdays

我有这段代码只是挂在 sheet 中,位于 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 循环中吗(?)。我不是编码员,我需要它来简化我的工作生活。任何指导将不胜感激。

添加一个 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

已经有跳过周末的功能。无需重新发明轮子。只需使用 WORKDAY 函数

r.Offset(0, 12) = Application.WorksheetFunction.Workday(Date, 1)