option explicit
Sub OdejmijSoboty_Niedziele()
Dim DATA_1 As Date
Dim DATA_2 As Date
Dim IloscDni As Integer, Licznik As Integer, DniRob As Integer
DATA_1 = DateSerial(2005, 7, 1) 'tu data początkowa
DATA_2 = DateSerial(2005, 7, 31) 'tu data końcowa
Licznik = 0
IloscDni = 0
Do
If Weekday(DATA_1) = vbSaturday Or Weekday(DATA_1) _
= vbSunday Then Licznik = Licznik + 1
DATA_1 = DATA_1 + 1
IloscDni = IloscDni + 1
Loop Until DATA_1 = DATA_2 + 1
DniRob = IloscDni - Licznik
MsgBox "Podany okres to " & IloscDni & " dni; " _
& "w tym sobót i niedziel " & Licznik _
& " ,a dni roboczych " & DniRob & ".", _
vbInformation, "Informacja"
End Sub
Mozna również skorzystać z funkcji DateDiff lub DatePart.
Niepamietam jednak czy uwzgledniają one lata przestępne.
Proponuję procedurę przetestować z kalendarzem. |