iplikci_80
Altın Üye
- Katılım
- 29 Kasım 2007
- Mesajlar
- 1,110
- Excel Vers. ve Dili
- excel 2007
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
KidemYili = DateDiff("YYYY", GTarihi, izinTarihi)
ekle = 0
yıl1 = CDate(Format(GTarihi, "dd.mm") & "." & Format(Now, "yyyy"))
yıl2 = CDate(Format(izinTarihi, "dd.mm") & "." & Format(Now, "yyyy"))
If yıl1 > yıl2 Then ekle = 1
KidemYili = DateDiff("YYYY", GTarihi, izinTarihi) - ekle
Function Izin(GTarihi As Date, izinTarihi As Date, Optional dogumtarihi As Date) As Integer
Dim Yas, Eski, YasHesapla, izinyili, j, IzinGunu, KidemYili
Dim TarihKontrol As Date
On Error Resume Next
'GTarih = işe giriş tarihi
'Doğum tarihi girilmezse yaş sınırına göre hesaplama yapılmaz.
Eski = False '10/06/2003 tarihi ve öncesi izin günü hesaplatma
YasHesapla = False ' 18 yastan kücük 50 yastan büyük olanlar için enaz izin günü hesaplatma
ekle = 0
yıl1 = CDate(Format(GTarihi, "dd.mm") & "." & Format(Now, "yyyy"))
yıl2 = CDate(Format(izinTarihi, "dd.mm") & "." & Format(Now, "yyyy"))
If yıl1 > yıl2 Then ekle = 1
KidemYili = DateDiff("YYYY", GTarihi, izinTarihi) - ekle
If KidemYili = 0 Then Exit Function
If dogumtarihi > 0 Then YasHesapla = True
For j = 1 To KidemYili
TarihKontrol = DateAdd("YYYY", j, GTarihi)
izinyili = DateDiff("YYYY", GTarihi, TarihKontrol)
yıl3 = CDate(Format(dogumtarihi, "dd.mm.yyyy"))
yıl4 = CDate(Format(TarihKontrol, "dd.mm.yyyy"))
Yas = DateDiff("YYYY", yıl3, yıl4)
If TarihKontrol <= #10/6/2003# Then Eski = True
If izinyili < 1 Then IzinGunu = 0
If izinyili >= 1 Then If Eski Then IzinGunu = 12 Else IzinGunu = 14
If izinyili >= 6 Then If Eski Then IzinGunu = 18 Else IzinGunu = 20
If izinyili >= 15 Then If Eski Then IzinGunu = 24 Else IzinGunu = 26
If YasHesapla Then
If Yas <= 18 Or Yas >= 50 And IzinGunu < 20 Then IzinGunu = 20
End If
Izin = Izin + IzinGunu
IzinGunu = 0
Eski = False
Next
End Function
Sayın halit3 bey;
doğumtarihi de sanırım yıl bazında işlem yapıyor, bu yüzden doğum tarihinin ay olarak değiştirmemiz formulü etkilemiyor, yanlış hata oluşuyor. Yukarıda gtarih ve izintarihi ne uyguladığınız kodları doğum tarihine nasıl uygulayabiliriz, yardımcı olabilir misiniz.
Ben aşağıdaki şekilde eklemeye çalıştım ama başaramadım.
Function ToplamIzinGunu(GTarihi As Date, izinTarihi As Date, Optional dogumTarihi As Date) As Double
Dim Eski As Boolean, yasHesapla As Boolean
Dim j As Integer, IzinGunu As Integer, kidemYili As Integer
Dim TarihKontrol As Date, Yas As Date, izinyili As Date
On Error Resume Next
' GTarih = işe giriş tarihi
yasHesapla = False ' 18 yastan kücük 50 yastan büyük olanlar için enaz izin günü hesaplatma
'kidemYili = DateDiff("m", GTarihi, izinTarihi) \ 12
kidemYili = Int(DateDiff("m", GTarihi, izinTarihi) / 12)
If kidemYili = 0 Then Exit Function
'Doğum tarihi girilmezse yaş sınırına göre hesaplama yapılmaz.
If dogumTarihi > 0 Then yasHesapla = True
For j = 1 To kidemYili
Eski = False '10/06/2003 tarihi ve öncesi izin günü hesaplatma
IzinGunu = 0
TarihKontrol = DateAdd("YYYY", j, GTarihi)
izinyili = Int(DateDiff("m", GTarihi, TarihKontrol) / 12)
Yas = Int(DateDiff("m", dogumTarihi, TarihKontrol) / 12)
'If TarihKontrol <= #10/6/2003# Then Eski = True
If TarihKontrol <= "10 Haziran 2003" Then Eski = True
If izinyili < 1 Then IzinGunu = 0
If izinyili >= 1 Then If Eski Then IzinGunu = 12 Else IzinGunu = 14
If izinyili >= 6 Then If Eski Then IzinGunu = 18 Else IzinGunu = 20
If izinyili >= 15 Then If Eski Then IzinGunu = 24 Else IzinGunu = 26
If yasHesapla Then
If Yas <= 18 Or Yas >= 50 And IzinGunu < 20 Then IzinGunu = 20
End If
ToplamIzinGunu = ToplamIzinGunu + IzinGunu
Next
End Function