我有以下代码,其中排除了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
如果有人能帮助我将其转化为我需要的东西,我会非常感激。老实说,我被困住了。先感谢您!
答案 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