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

时间:2018-08-23 17:26:37

标签: excel vba excel-vba excel-2010

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

2 个答案:

答案 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