VBA获得前一个工作日

时间:2017-06-20 04:45:02

标签: excel-vba vba excel

我已经创建了一个VBA来自动填充昨天在单元格中的日期,但需要帮助,因为如何在星期一触发它时将日期定为6月16日(星期五)而不是6月18日(星期日)。

`If .Column <> 11 Or .Row < 1 Then Exit Sub
    If .Value = "Select" Then
        If .Offset(0, 1).Value = "" Then
            .Offset(0, 1).NumberFormat = "mm/dd/yy"
            .Offset(0, 1).Value = Now - 1
            .Offset(0, 2).Value = Now - 1
            .Offset(0, 2).NumberFormat = "mmm-yy" '<~~ mmm-yy
            .Offset(0, 3).Value = GetMonthWeek(Now - 1)
        End If'

2 个答案:

答案 0 :(得分:1)

我不确定是否有任何内置方法,但以下逻辑有效:

Dim tempDate
tempDate = DateAdd("d", -1, Date)         'Today's date - 1
While Weekday(tempDate) = 1 Or Weekday(tempDate) = 7     'If tempDate is a Sunday or a Saturday, keep on subtracting one day until we get a weekday
    tempDate = DateAdd("d", -1, tempDate)
Wend
Cells(1, 1).Value = tempDate

尝试在代码中实现此功能,并告诉我它是否有效。 :)

答案 1 :(得分:1)

无论当天是星期五,工作表函数都可以轻松检索上周五。

'last Friday regardless
=A2-WEEKDAY(A2, 16)
'last Friday unless a Friday
=A2-WEEKDAY(A2, 16)+(WEEKDAY(A2)=6)*7

WEEKDAY和布尔操作可直接转移到VBA。

enter image description here