• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

CheckBox İle İzin Süresi Hesaplama

Syn ormann;

15 nolu mesaj ekinde 80 gün izin sadece pazar günlerini kapsıyor. (haliyle takvim yetmiyor)


Tablodan anladığım;
a)-tatil günleri izin gün sayısının dışında olacak.
b)-checkbox ile seçim yaptığınız günlerde izin gün sayısının dışında olacak.

Ekli dosyada Yusuf Bey'in kodlarınında eklendiği örneği deneyin.
İki koddan birini kullanın.
İyi çalışmalar.

Link:
http://dosya.co/h6ojzcs1fnsk/ormann-İZİN_SÜRESİ-2.zip.html
 

Ekli dosyalar

Sayın ormann, nedense 6 mayıs gününü pazar olmasına rağmen hesaba katmıyor. Nedendir bilemedim.

Sayın muygun, ilginize teşekkürler. Arkadaş, izninin son gününü bulmak istiyormuş, verdiğim kod ise ilk iş gününü buluyor.
 
Kodu aşağıdaki gibi değiştirip uyguladığımda A sütununa tatilleri, B sütununa izin günlerini yazıyor. Kontrol ettiğimde kodun

toplam = toplam +1

kısmının, nedense for next döngüsünde dikkate alınmadığını, döngünün sonlandırılacağı "toplam" değişkeninin arttırılmadığını anladım. Neden olduğunu çözemedim maalesef. döngü eklenen tatiller kadar arttırılması gerekirken, ilk belirlenen toplam değişkenine göre çalışıyor.

Kod:
Sub hesapla()
[A:B] = ""
toplam = [F7] + [F10] - 1
For i = [F7] To toplam
    If WorksheetFunction.CountIf(Range("I6:I100"), i) > 0 Then
        toplam = toplam + 1
        Range("A" & Cells(Rows.Count, "A").End(3).Row + 1) = i
    ElseIf WorksheetFunction.Index([M3:M15], WorksheetFunction.Weekday(i, 2) * 2 - 1) <> "" Then
        toplam = toplam + 1
        Range("A" & Cells(Rows.Count, "A").End(3).Row + 1) = i
    Else
        Range("B" & Cells(Rows.Count, "B").End(3).Row + 1) = i
    End If
Next i
[F13] = toplam
End Sub
 
Sayın Muygun ve Sayın Yusuf bey çok teşekkür ederim. Sayın Muygun Son yapmış olduğunuz kod doğru tarihi hesaplıyor.Yusuf bey son göndermiş olduğunuz kod Muygun beyin kodundan farklı bir sonuç çıkarıyor.
Başlangıç Tarihini:01/01/2018
İzin Gün Sayısını:100
İzin Dışı Gün:Pazar Tatil günü boş yazdığımda
Sayın Muygun'un Sonuç:26/04/2018
Sayın Ahmet Beyin sonuç:24/04/2018 gibi fark oluşuyor.
 
Sayın ormann, hatanın farkındayım, nedenini çözemiyorum.
 
Ahmet bey izin süresi 36 gün yazıldığında doğru sonucu veriyor.Fakat bu sayıdan sonra yazıldığında Muygun beyin sonucundan farklı bir sonuç çıkarıyor.
 
Sanıyorum Do until döngüsüyle çözdüm olayı. ekli dosyayı inceleyiniz:
 

Ekli dosyalar

Ahmet bey merhabalar;
Linki ekleyebilirmisiniz ?.Birde tarihleri A ve B sütünuna değilde r ve s sutunlarına atabilir mi?
 
[F13] = başla

yerine

[F13] = başla - 1

olmalı sanıyorum.
 
Kodu şöyle dener misiniz?

Kod:
Sub izinler()
[R2:S10000] = ""
toplam = [F7] + [F10] - 1
başla = [F7]
izin = 0
Do Until izin = [F10]
    
    If WorksheetFunction.CountIf(Range("I6:I100"), başla) > 0 Then
        Range("R" & Cells(Rows.Count, "R").End(3).Row + 1) = başla
        başla = başla + 1
    ElseIf WorksheetFunction.Index([M3:M15], WorksheetFunction.Weekday(başla, 2) * 2 - 1) <> "" Then
        Range("R" & Cells(Rows.Count, "R").End(3).Row + 1) = başla
        başla = başla + 1
    Else
        Range("S" & Cells(Rows.Count, "S").End(3).Row + 1) = başla
        başla = başla + 1
        izin = izin + 1
    End If
Loop
[F13] = başla - 1

Do Until WorksheetFunction.CountIf(Range("I6:I100"), başla) = 0 And _
         WorksheetFunction.Index([M3:M15], WorksheetFunction.Weekday(başla, 2) * 2 - 1) = ""
    
    başla = başla + 1
Loop

[F16] = başla


End Sub
 
Yusuf bey ;
İzin Başlangıcı:30/12/2017
İzin Süresi:5 gün
İzin Bitişi Tarihi:05/01/2018
Göreve Başlama Tarihi:06/01/2018 olması gerekirken Cumartesi iş günü olduğu halde 07/01/2018 tarihine atıyor.Burda bir hata var gibi
 
Son gönderdiğim mesajdaki kodu, gönderdikten hemen sonra değiştirmiştim, tekrar kontrol eder misiniz?
 
Yusuf bey çok teşekkür ederim.Ellerinize sağlık.Kod gayet güzel çalışıyor.Ayrıca sayın Muygun beye de teşekkürlerimi sunuyorum
 
Geri
Üst