Yıllık izinde hesaplaması

Katılım
8 Temmuz 2020
Mesajlar
36
Excel Vers. ve Dili
2006 sürüm Türkçe
Userform frmIzinKullanim olan sayfada personelin sicil numarası veya btnAra açılan listeden personeli bulup yıllık izin yaza biliyorum.
Sorun yaşadığım kısım txtHakEdilenYI + txtDevredenYI - txtGunSayisi ile çıkan sonucu txtKalanYI aktarmamda yaşıyorum.

Yazmış olduğum kod aşağıda bulunmaktadır.

Kısacası Personel_Bilgileri sayfasında AC girilen yıllık izin gün adetinin güncellenmesi.

per.Cells(kac, 29) = per.Cells(kac, 27) + per.Cells(kac, 35) - per.Cells(kac, 28) yaptığımda kullanılan yıllık izin toplamını düşüyor. ben personele 2 gün giriyorsam personel 6 gün önceden kullanmış ise o 6 günü düşüyor.



Kod:
Private Sub btnKaydet_Click()
    Dim sonsat As Integer
    Dim sonsatpers As Integer
    Dim i As Integer
    If txtID = "" Then MsgBox "Lütfen kayıtlı personellerden birisini seçiniz.", vbInformation, "Uyarı": Exit Sub
    If txtBaslangicTarihi = "" Or txtBitisTarihi = "" Or cbIzinTuru = "" Then MsgBox "Lütfen izin tarihlerini ve izin türünü doğru bir şekilde giriniz.", vbInformation, "Uyarı": Exit Sub
    sat = ListBox1.ListIndex + 2
    sonsat = izndk.Range("A10000").End(xlUp).Row + 1
    If sat < 2 Then MsgBox "Lütfen kayıtlı personellerden birisini seçiniz.", vbInformation, "Uyarı": Exit Sub
    If sat < sonsat Then sonsat = sat
    dur = 1
    With izndk
        .Range("A" & sonsat) = txtHareketID
        .Range("B" & sonsat) = txtID
        .Range("C" & sonsat) = txtSicilNo
        .Range("D" & sonsat) = txtPersonelAd
        .Range("E" & sonsat) = txtPersonelSoyad
        .Range("F" & sonsat) = cbPozisyon
        .Range("G" & sonsat) = txtbBirimi
        .Range("H" & sonsat) = cbstat
        .Range("I" & sonsat) = txtMudurluk
        .Range("J" & sonsat) = cbhafta
        .Range("K" & sonsat) = txtGunSayisi.Value
        .Range("L" & sonsat) = CDate(txtBaslangicTarihi)
        .Range("M" & sonsat) = CDate(txtBitisTarihi)
        .Range("N" & sonsat) = txtCikissaat
        .Range("O" & sonsat) = txtBitissaat
        .Range("P" & sonsat) = txtsaat.Value
        .Range("R" & sonsat) = cbIzinTuru
        .Range("S" & sonsat) = txtAdres
        .Range("T" & sonsat) = txtIzinGeregi
        .Range("U" & sonsat) = cbvardiya
        .Range("V" & sonsat) = Now
        .Range("W" & sonsat) = Environ("USERNAME")
    End With
    If sonsat = ListBox1.ListCount + 1 Then
        tnm.Range("K2") = tnm.Range("K2") + 1
    End If
    kac = WorksheetFunction.Match(txtID, per.Range("A:A"), 0)
    Columns(26).NumberFormat = "@"
    per.Cells(kac, 26) = WorksheetFunction.Text(WorksheetFunction.SumIfs(izndk.Range("P:P"), izndk.Range("B:B"), txtID, izndk.Range("R:R"), tnm.Range("J6")), "[hh]:mm")
    per.Cells(kac, 28) = WorksheetFunction.SumIfs(izndk.Range("K:K"), izndk.Range("B:B"), txtID, izndk.Range("R:R"), tnm.Range("J2"))
    per.Cells(kac, 29) = per.Cells(kac, 27) + per.Cells(kac, 35) - CDbl(txtGunSayisi.Value)
    per.Cells(kac, 30) = WorksheetFunction.SumIfs(izndk.Range("K:K"), izndk.Range("B:B"), txtID, izndk.Range("R:R"), tnm.Range("J4"))
    per.Cells(kac, 31) = WorksheetFunction.SumIfs(izndk.Range("K:K"), izndk.Range("B:B"), txtID, izndk.Range("R:R"), tnm.Range("J3"))
    per.Cells(kac, 32) = per.Cells(kac, 28) + per.Cells(kac, 30) + per.Cells(kac, 31)
    per.Cells(kac, 33) = WorksheetFunction.SumIfs(izndk.Range("K:K"), izndk.Range("B:B"), txtID, izndk.Range("R:R"), tnm.Range("J7"))
    per.Cells(kac, 34) = WorksheetFunction.SumIfs(izndk.Range("K:K"), izndk.Range("B:B"), txtID, izndk.Range("R:R"), tnm.Range("J5"))
    
    If eskitxtid <> Empty And eskitxtid <> txtID And kac2 <> Empty Then
        per.Cells(kac2, 26) = WorksheetFunction.Text(WorksheetFunction.SumIfs(izndk.Range("P:P"), izndk.Range("B:B"), eskitxtid, izndk.Range("R:R"), tnm.Range("J6")), "[hh]:mm")
        per.Cells(kac2, 28) = WorksheetFunction.SumIfs(izndk.Range("K:K"), izndk.Range("B:B"), eskitxtid, izndk.Range("R:R"), tnm.Range("J2"))
        per.Cells(kac2, 29) = per.Cells(kac, 27) + per.Cells(kac, 35) - CDbl(txtGunSayisi.Value)
        per.Cells(kac2, 30) = WorksheetFunction.SumIfs(izndk.Range("K:K"), izndk.Range("B:B"), eskitxtid, izndk.Range("R:R"), tnm.Range("J4"))
        per.Cells(kac2, 31) = WorksheetFunction.SumIfs(izndk.Range("K:K"), izndk.Range("B:B"), eskitxtid, izndk.Range("R:R"), tnm.Range("J3"))
        per.Cells(kac2, 32) = per.Cells(kac2, 28) + per.Cells(kac2, 30) + per.Cells(kac2, 31)
        per.Cells(kac2, 33) = WorksheetFunction.SumIfs(izndk.Range("K:K"), izndk.Range("B:B"), eskitxtid, izndk.Range("R:R"), tnm.Range("J7"))
        per.Cells(kac2, 34) = WorksheetFunction.SumIfs(izndk.Range("K:K"), izndk.Range("B:B"), eskitxtid, izndk.Range("R:R"), tnm.Range("J5"))
    End If
    ss = izndk.Cells(Rows.Count, 4).End(xlUp).Row + 1
    If ss < 2 Then ss = 2
    ListBox1.RowSource = izndk.Name & "!A2:W" & ss
    dur = Empty
    ListBox1.ListIndex = ListBox1.ListCount - 1
    ListBox1.ListIndex = sonsat - 2
    ThisWorkbook.Save
    MsgBox "Kayıt Başarılı", vbInformation, "Bilgi"
End Sub
 
Üst