添加到当前日期VBA时排除周末天数

时间:2017-11-15 12:13:59

标签: excel vba date filter

我有以下代码,其中排除了excel表中与日期不同的所有结果+ 6天。 问题是,当我星期一执行时,我遇到了星期天。 我需要改变它的方式,它将总是在我当前日期增加6天,除非结果是星期六或星期日,然后我想在那之后的第一个工作日,意思是 - 星期一。

    Public Sub GRP_SC_Filter1()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False


    Dim DelDate As Long


    DelDate = DateSerial(Year(Date), Month(Date), Day(Date) + 6)


    LR = Sheets("Goods Receivable Planning").Range("A" & Rows.Count).End(xlUp).Row
    Cells.AutoFilter Field:=13, Criteria1:="<>" & DelDate

    ALR = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
    If ALR > 2 Then
        Range("A2:A" & LR).SpecialCells(xlCellTypeVisible).Select
        Range("A2:A" & LR).Delete
        Range("A1").Activate
    End If
    Cells.AutoFilter
 '  MsgBox "Finished deleting rows"
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub

如果有人能帮助我将其转化为我需要的东西,我会非常感激。老实说,我被困住了。先感谢您!

2 个答案:

答案 0 :(得分:0)

这个功能可以做你想要的:

Function GetNextWorkingDay(dt As Date) As Date
  Select Case Weekday(dt)
    Case 1
      GetNextWorkingDay = DateAdd("d", 1, dt)
    Case 7
      GetNextWorkingDay = DateAdd("d", 2, dt)
    Case Else
      GetNextWorkingDay = dt
  End Select
End Function

答案 1 :(得分:0)

函数weekDay可以解雇你。第二个参数定义返回1的日期,vbMonday表示星期一为1,星期六= 6,星期日= 7

所以,一种方法是:

deldate = DateSerial(Year(Date + 3), Month(Date + 3), Day(Date + 3) + 6)
Do While (Weekday(deldate, vbMonday) >= 6)
    deldate = deldate + 1
Loop