返回列表 上一主題 發帖

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

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

各位前輩你們好!
        前輩!
              這是每年的最後一天
             If Month(Date) = 12 And Day(Date) = 31 Then 夢想
             請問每年最後一個工作天程式如何?
             這是每年的第一天
             If Month(Date) = 1 And Day(Date) = 1 Then 成真
             請問每年的第一個工作一天程式如何?
             請知道的前輩,不吝賜教謝謝再三!!

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

回復 9# GBKEE
2007也可使用Evaluate

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

TOP

[版主管理留言]
  • Hsieh(2010-8-23 22:19): 歡迎貴客光臨

各位你好, 初到貴境

最後一個工作天
  1. Function LastFridayInMonth(lngYear As Long, lngMonth As Long) As Date
  2.     Dim lngLastDay As Long
  3.     'define last day of the month of interest:
  4.     lngLastDay = DateSerial(lngYear, lngMonth + 1, 0)
  5.     'use to get last friday:
  6.     LastFridayInMonth = lngLastDay - WeekDay(lngLastDay, vbFriday) + 1
  7. End Function

  8. Sub Check_Last_WorkDay()

  9. MsgBox LastFridayInMonth(2011, 12)

  10. End Sub
複製代碼

TOP

回復 9# GBKEE
hsieh前輩你好!
       偶像前輩!謝謝!!謝謝再三!!

GBKEE前輩你好!
   良師!謝謝!小弟以為存成2007格式就可以
      執行還是不行哈哈!!謝謝再三!!

TOP

回復 7# myleoyes
回復  myleoyes
2003無法使用  Application.WorkDay(DateSerial(Year(Date) - 1, 12, 31), 1) 程式碼
GBKEE 發表於 2010-8-21 15:38

我的版本 是 2003      我不知道 2007 無法使用 Evaluate

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

回復 5# GBKEE
GBKEE前輩你好!
   良師!謝謝!程式有誤喔!
      型態不符合,如附檔Leo27-2
      正確應該如附檔Leo27-1
      先將日期調整至2010/12/31
      開啟檔案程式在AM1建立日期存檔關閉
      再日期調整至2011/1/3
      開啟檔案程式顯示夢想成真就對囉!!
      請參考看看謝謝再三!!

Leov27-1.rar (12.58 KB)

Leov27-2.rar (11.52 KB)

TOP

回復 5# GBKEE
hsieh前輩你好!
       偶像前輩!謝謝!!哇讚耶!!謝謝再三!!

TOP

本帖最後由 GBKEE 於 2010-8-21 15:40 編輯

回復 3# myleoyes
2003無法使用  Application.WorkDay(DateSerial(Year(Date) - 1, 12, 31), 1) 程式碼
  1. Private Sub Workbook_Open()
  2.    If Evaluate("WORKDAY(""" & Year(Date) & "/1 "",1)") = Date Then 成真
  3.   If Evaluate("WORKDAY(""" & Year(Date) + 1 & "/1"",-1)") = Date Then 夢想
  4. End Sub
複製代碼

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

        靜思自在 : 天上最美是星星,人生最美是溫情。
返回列表 上一主題