Function SundayCount(StartDate As Date, EndDate As Date) As Long
On Error GoTo Err_SundayCount:
Dim Days As Integer '區間天數
Dim FirstSunday As Date '第一個周日具體日期
Dim NextSunday As Date '下一個周日具體日期
Dim Myweekday As Integer
Dim i As Long
Dim j As Long
'確保日期都不為空,若為空則置為0
If Not IsNull(StartDate) And Not IsNull(EndDate) Then
'如果結束日期<開始日期,則為0
If EndDate >= StartDate Then
'如果天數大於7,則先確定第一個周日是哪個日期,再7天一加,直到大於結束日期
Days = EndDate - StartDate
' If Days > 7 Then
Myweekday = Weekday(StartDate) '算出是周幾,星期天是1
If Myweekday > 1 Then
FirstSunday = StartDate + 8 - Myweekday
Else
FirstSunday = StartDate
End If
Debug.Print "最近的周日是: " & FirstSunday
NextSunday = FirstSunday + 7
i = 1
SundayCount = 1
For i = 1 To Days Step 7
Debug.Print "下一個周日是: " & NextSunday
If NextSunday > EndDate Then
If FirstSunday > EndDate Then
SundayCount = SundayCount - 1
End If
Debug.Print "周日數目是: " & SundayCount
Exit Function
End If
NextSunday = NextSunday + 7
i = i + 1
SundayCount = SundayCount + 1
Debug.Print "周日數目是: " & SundayCount
Next
Else
SundayCount = 0
End If
Else
SundayCount = 0
End If
Exit_SundayCount:
Exit Function
Err_SundayCount:
SundayCount = 0
Resume Exit_SundayCount
End Function
Sub Test()
Debug.Print SundayCount(#2/6/2005#, #2/25/2005#)
End Sub