返回列表 上一主題 發帖

每年的第一個工作與最後一個工作天

y = InputBox("輸入年度", , 2010)
MsgBox Format(Application.WorkDay(DateSerial(y - 1, 12, 31), 1), "yyyy/mm/dd")
MsgBox Format(Application.WorkDay(DateSerial(y + 1, 1, 1), -1), "yyyy/mm/dd")
學海無涯_不恥下問

TOP

本帖最後由 Hsieh 於 2010-8-21 21:38 編輯
  1. Private Sub Workbook_Open()
  2. y = CDate(Application.WorkDay(DateSerial(Year(Date) - 1, 12, 31), 1)) '今年的第一個工作天
  3. y1 = CDate(Application.WorkDay(DateSerial(Year(Date) + 1, 1, 1), -1)) '今年的最後一個工作天
  4. If Date = y1 Then '如果今天是今年的最後一個工作天
  5. MsgBox "Today is lastworkday for this year"
  6. ElseIf Date = y Then '如果今天是今年的第一個工作天
  7. MsgBox "Today is firstworkday for this year"
  8. End If
  9. End Sub
複製代碼
學海無涯_不恥下問

TOP

first_last.rar (7.98 KB) 版本若不支援,自己寫函數,366天花不了太多時間
  1. Function MyWorkday(y%, t%)
  2. Dim Ar()
  3. For i = DateSerial(y, 1, 1) To DateSerial(y, 12, 31)
  4.    If Weekday(i, 2) < 6 Then
  5.    ReDim Preserve Ar(s)
  6.    Ar(s) = i
  7.    s = s + 1
  8.    End If
  9. Next
  10. If t = 0 Then
  11.    MyWorkday = Ar(0) '第一個工作天
  12.    ElseIf t = 1 Then
  13.    MyWorkday = Ar(s - 1) '最後工作天
  14. End If
  15. End Function
複製代碼
學海無涯_不恥下問

TOP

本帖最後由 Hsieh 於 2010-8-23 19:40 編輯

回復 9# GBKEE
2007也可使用Evaluate

    firstworkday = CDate(Evaluate("WORKDAY(DATE(YEAR(TODAY()),1,0),1)"))
學海無涯_不恥下問

TOP

        靜思自在 : 吃苦了苦、苦盡廿來,享福了福、福盡悲來。
返回列表 上一主題