2017-06-20 143 views
0

我已經創建了一個VBA來自動填充昨天的日期在一個單元格中,但需要幫助如何獲得日期爲6月16日(星期五)而不是6月18日(這是一個星期天),當我在星期一觸發它。VBA得到前一個工作日

`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' 
+0

所以,你明白'GetMonthWeek'不是天然VBA命令或功能,以便在您解決問題,就必須懂得這是擺在首位定義(UDF?)任何真正的嘗試。 – Jeeped

回答

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

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 

嘗試在你的代碼實現這一點,讓我知道,如果它的工作原理。 :)

相關問題