13/09/2019, 10:45
tazzy34
merhabalar, ben de bu kodu aşağıdaki gibi (çay molalarını da hesaba katarak) programda kullanıyorum ama cuma günleri fazladan yarım saat mola veriliyor ve bayram günlerini (resmi ve dini bayramlar) atlatmayı nasıl yapabilirim? yardımcı olursanız sevinirim:
Function BitisBuL(BTarih, Sure, MesaiBas1, MesaiBit1, MesaiBas2, MesaiBit2, MesaiBas3, MesaiBit3, MesaiBas4, MesaiBit4)
' MesaiBas1: 08:00
' MesaiBit1: 10:00
' MesaiBas2: 10:15
' MesaiBit2: 12:30
' MesaiBas3: 13:00
' MesaiBit3: 15:30
' MesaiBas4: 15:45
' MesaiBit4: 18:00
On Error GoTo hata
Dim DimX
DimX = BTarih
For i = 1 To Sure
'Cumartesi ise
If Weekday(DimX) = 7 Then
DimX = DateAdd("d", 2, DimX)
DimX = Format$(DimX, "dd.mm.yyyy") & " " & Format$(MesaiBas1, "hh:nn:ss")
DimX = DateAdd("n", 1, DimX)
Else
'Pazar ise
If Weekday(DimX) = 1 Then
DimX = DateAdd("d", 1, DimX)
DimX = Format$(DimX, "dd.mm.yyyy") & " " & Format$(MesaiBas1, "hh:nn:ss")
DimX = DateAdd("n", 1, DimX)
Else
'Mesai bitmişse
If Format$(DimX, "hh:nn:ss") >= Format$(MesaiBit4, "hh:nn:ss") Then
DimX = DateAdd("d", 1, DimX)
DimX = Format$(DimX, "dd.mm.yyyy") & " " & Format$(MesaiBas1, "hh:nn:ss")
DimX = DateAdd("n", 1, DimX)
Else
'1.Çay Paydosuysa
If (Format$(DimX, "hh:nn:ss") >= MesaiBit1) And (Format$(DimX, "hh:nn:ss") < MesaiBas2) Then
DimX = Format$(DimX, "dd.mm.yyyy") & " " & Format$(MesaiBas2, "hh:nn:ss")
DimX = DateAdd("n", 1, DimX)
Else
'Öğle Paydosuysa
If (Format$(DimX, "hh:nn:ss") >= MesaiBit2) And (Format$(DimX, "hh:nn:ss") < MesaiBas3) Then
DimX = Format$(DimX, "dd.mm.yyyy") & " " & Format$(MesaiBas3, "hh:nn:ss")
DimX = DateAdd("n", 1, DimX)
Else
'2.Çay Paydosuysa
If (Format$(DimX, "hh:nn:ss") >= MesaiBit3) And (Format$(DimX, "hh:nn:ss") < MesaiBas4) Then
DimX = Format$(DimX, "dd.mm.yyyy") & " " & Format$(MesaiBas4, "hh:nn:ss")
DimX = DateAdd("n", 1, DimX)
Else
'Mesai saati ise
DimX = DateAdd("n", 1, DimX)
End If
End If
End If
End If
End If
End If
Next
BitisBuL = DimX
CIKIS: Exit Function
hata: Resume CIKIS
End Function
Function BitisBuL(BTarih, Sure, MesaiBas1, MesaiBit1, MesaiBas2, MesaiBit2, MesaiBas3, MesaiBit3, MesaiBas4, MesaiBit4)
' MesaiBas1: 08:00
' MesaiBit1: 10:00
' MesaiBas2: 10:15
' MesaiBit2: 12:30
' MesaiBas3: 13:00
' MesaiBit3: 15:30
' MesaiBas4: 15:45
' MesaiBit4: 18:00
On Error GoTo hata
Dim DimX
DimX = BTarih
For i = 1 To Sure
'Cumartesi ise
If Weekday(DimX) = 7 Then
DimX = DateAdd("d", 2, DimX)
DimX = Format$(DimX, "dd.mm.yyyy") & " " & Format$(MesaiBas1, "hh:nn:ss")
DimX = DateAdd("n", 1, DimX)
Else
'Pazar ise
If Weekday(DimX) = 1 Then
DimX = DateAdd("d", 1, DimX)
DimX = Format$(DimX, "dd.mm.yyyy") & " " & Format$(MesaiBas1, "hh:nn:ss")
DimX = DateAdd("n", 1, DimX)
Else
'Mesai bitmişse
If Format$(DimX, "hh:nn:ss") >= Format$(MesaiBit4, "hh:nn:ss") Then
DimX = DateAdd("d", 1, DimX)
DimX = Format$(DimX, "dd.mm.yyyy") & " " & Format$(MesaiBas1, "hh:nn:ss")
DimX = DateAdd("n", 1, DimX)
Else
'1.Çay Paydosuysa
If (Format$(DimX, "hh:nn:ss") >= MesaiBit1) And (Format$(DimX, "hh:nn:ss") < MesaiBas2) Then
DimX = Format$(DimX, "dd.mm.yyyy") & " " & Format$(MesaiBas2, "hh:nn:ss")
DimX = DateAdd("n", 1, DimX)
Else
'Öğle Paydosuysa
If (Format$(DimX, "hh:nn:ss") >= MesaiBit2) And (Format$(DimX, "hh:nn:ss") < MesaiBas3) Then
DimX = Format$(DimX, "dd.mm.yyyy") & " " & Format$(MesaiBas3, "hh:nn:ss")
DimX = DateAdd("n", 1, DimX)
Else
'2.Çay Paydosuysa
If (Format$(DimX, "hh:nn:ss") >= MesaiBit3) And (Format$(DimX, "hh:nn:ss") < MesaiBas4) Then
DimX = Format$(DimX, "dd.mm.yyyy") & " " & Format$(MesaiBas4, "hh:nn:ss")
DimX = DateAdd("n", 1, DimX)
Else
'Mesai saati ise
DimX = DateAdd("n", 1, DimX)
End If
End If
End If
End If
End If
End If
Next
BitisBuL = DimX
CIKIS: Exit Function
hata: Resume CIKIS
End Function