İzin kayıt sistemi hk.

GursoyC

Altın Üye
Katılım
7 Ocak 2015
Mesajlar
527
Excel Vers. ve Dili
Office 2024 Türkçe
Altın Üyelik Bitiş Tarihi
17-05-2028
Benim tavsiyem izne çıkan kişinin kayıtlarını tuttuğunuz sayfaya bir tarih sütunu ekleyip tarihe göre tersten sıralatın.
(Ben alışkanlık olarak, bir kayıt sayfasında, benzersiz bir sütun kullanmak adına saniye belirten bir sütun kaydı yaparım)
Sonra da şu kodu kullanın:

Kod:
Private Sub ComboBox1_Click()
k = ActiveSheet.Name
Sheets("Sayfa1").Select
On Error Resume Next
Set izinli = Sheets("Sayfa1").Range("B:B").Find(ComboBox1.Value, Lookat:=xlWhole)
izinlimi = izinli.Offset(0, 3).Value
    If izinlimi > CDate(Today) Then
    MsgBox ("Bu kişi şu anda izindedir")
    Sheets(k).Select
    Exit Sub
    End If
Sheets(k).Select
End Sub
 

balanar

Altın Üye
Katılım
22 Şubat 2021
Mesajlar
347
Excel Vers. ve Dili
Excel 2007
Altın Üyelik Bitiş Tarihi
09-03-2027
bu şekilde olmuyor hocam yinede teşekkür ederim..

çünkü örnek olarak 02.08.2021 - 05.08.2021 tarihinde girilen izin var misal
03.08.2021 - 10.08.2021 tarihinde izin giriliyor bu karısıklıgı cozmem için farklı bir yol arıyorum
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Aşağıdaki ilaveyi belirtilen yere girip dener misin.
C++:
If say > 0 Then
    satir = s1.Range("B:B").Find(aranan).Row
  
    '.......................
    ' Aray aşağıdaki satırları kopyalayıp dener misin.
    If (s1.Cells(satir + say - 1, 4) >= CDate(TextBox4.Value) And _
        s1.Cells(satir + say - 1, 4) <= CDate(TextBox5.Value)) Or _
        (s1.Cells(satir + say - 1, 5) >= CDate(TextBox4.Value) And _
        s1.Cells(satir + say - 1, 5) <= CDate(TextBox5.Value)) Then
        MsgBox "İzin tarihi uygun değil"
        TextBox4 = ""
        TextBox5 = ""
        TextBox4.SetFocus
        Exit Sub
    End If
    '...................................
    s1.Rows(satir + say).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
 
Son düzenleme:

balanar

Altın Üye
Katılım
22 Şubat 2021
Mesajlar
347
Excel Vers. ve Dili
Excel 2007
Altın Üyelik Bitiş Tarihi
09-03-2027
229166

kodu doğru alana yapıstırdıgımı düşünüyorum sonuç sağdaki gibi zaten uyarı vsde vermedi hocam textboxa yazarken
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Kodda hata görmüş ve düzeltmiştim. Hızlı davranıp ben değiştirene kadar kullanmılşsınız=)
Düzeltilmiş halini dener msiin
 

balanar

Altın Üye
Katılım
22 Şubat 2021
Mesajlar
347
Excel Vers. ve Dili
Excel 2007
Altın Üyelik Bitiş Tarihi
09-03-2027
Hocam emeğine sağlık, kaydet aşamasına gelmeden İZİN BAŞLANGIÇ tarihi yazdıktan sonra uyarının cıkma ihtimali var mı? zaten uyarı kısmı izin başlangıç girildikten sonra mevzu bitmiş demektir:)
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Ben de şöyle bir soru sorayım.
Önce tarih sonra isim girerse nasıl yapacağız?
 

balanar

Altın Üye
Katılım
22 Şubat 2021
Mesajlar
347
Excel Vers. ve Dili
Excel 2007
Altın Üyelik Bitiş Tarihi
09-03-2027
yok hocam önce isim seçilecek, seçilmesi lazım yani. Yada orayada seçilmeden textbox aktif olmasın mı koymak lazım
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Uyarıyı ha Kaydet deyince ha tarih girince versin. Sizin için değişen nedir ki?

Mesela önceki kayıtlarınızda 1.07.2021 - 15.07.2021 tarihli bir izin tanımlanmış olsun.
Siz 25.06.2021 tarihli bir başlangıç tarihi girerseniz kontrol edince sorun olmayacak.
Taki bitiş tarihine 1.07.2021 tarihinden küçük bir değer girmeyene kadar.

Hem TextBox4 de, Hem TextBox5 de kontrol yapmak yerine bu şekilde daha sade oluyor.
Bu sebeple yukarıdaki verdiğim yöntemin sizin için daha doğru olduğunu düşünüyorum.
 

balanar

Altın Üye
Katılım
22 Şubat 2021
Mesajlar
347
Excel Vers. ve Dili
Excel 2007
Altın Üyelik Bitiş Tarihi
09-03-2027
Peki hocam teşekkür ediyorum
 

balanar

Altın Üye
Katılım
22 Şubat 2021
Mesajlar
347
Excel Vers. ve Dili
Excel 2007
Altın Üyelik Bitiş Tarihi
09-03-2027
Detaylı inceledim şimdi Ömer hocam senin kodda olmadı malesef. İstersen örnek dosyaya ekle

05.08.2021 - 15.08.2021 gir, sonra 06.08.2021 - 07.08.2021 gir.

Olmaması lazımken oluyor çok ilginç
 

balanar

Altın Üye
Katılım
22 Şubat 2021
Mesajlar
347
Excel Vers. ve Dili
Excel 2007
Altın Üyelik Bitiş Tarihi
09-03-2027
Kod:
Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'izin bşlama tarihi textbox çıkışı
If TextBox4.Value > "" Then
    Dim sf As Worksheet
    Set sf = Sheets("Sayfa1")
    son = sf.Cells(Rows.Count, "B").End(xlUp).Row
    tx4 = CDate(TextBox4)
  
  
    For i = 2 To son
  
    If Cells(i, "B") = ComboBox1.Text Then
        If CDate(TextBox4) >= CDate(Cells(i, "D")) And CDate(TextBox4) <= CDate(Cells(i, "E")) Then
        MsgBox "Çakışan İzni Bulunmakta Lütfen Kontrol Ediniz!"
        Exit Sub
        ElseIf CDate(TextBox4) = CDate(Cells(i, "D")) Then
        MsgBox "Çakışan İzni Bulunmakta Lütfen Kontrol Ediniz!"
        Exit Sub
        End If
    End If
    Next i
  
End If
End Sub
şu şekilde çözüldü, okutkan hocama teşekkürler. Faydalanmak isteyen olur diye ekledim..
Konu tamamlanmıştır :)
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Biraz uğraştım. Yaptıklarımı ekleyeyim.

İlk gönderdiğimi dikkate almayın. Buton ve CommoBoxların TabIndexlerini 1 den 8 e kadar özellikler penceresinden ayarlayın.

CommandButton1 kodlarının baş tarafına aşağıdakini ekleyin.
C++:
    If ComboBox2.ListIndex < 0 Then
        MsgBox "İzin kullanım yılı seçin"
        ComboBox2.SetFocus
        Exit Sub
    End If

TextBox4 ve 5 için aşağıdakileri ekleyin.
C++:
Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Call Tarihkontrol
End Sub
Private Sub TextBox5_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Call Tarihkontrol
End Sub

Userform Intialize kodlarını aşağıdkiyle değiştirin
C++:
Private Sub UserForm_Initialize()
    CommandButton1.Enabled = False
    CommandButton1.BackColor = &HE0E0E0
    son = Sheets("personeller").Range("B" & Rows.Count).End(3).Row
    For i = 2 To son
        ComboBox1.AddItem Sheets("personeller").Range("B" & i).Value
    Next
End Sub

Ve aşağıdaki kodları yapıştırın.
C++:
Sub Tarihkontrol()
Dim s1 As Worksheet, SonSatir As Integer
Dim aranan As String, say As Long, satir As Long
    If TextBox4 = "" Or Not IsDate(TextBox4) Then TextBox4.SetFocus: GoTo TarihHata
    If TextBox5 = "" Or Not IsDate(TextBox5) Then TextBox5.SetFocus: GoTo TarihHata
    If TextBox5 <= TextBox4 Then TextBox4.SetFocus: GoTo TarihHata
    Set s1 = Sheets("Sayfa1")
    aranan = Trim(ComboBox1.Text)
    say = WorksheetFunction.CountIf(s1.Range("B1:B" & Rows.Count), aranan)
    If say > 0 Then
        satir = s1.Range("B:B").Find(aranan).Row
        For i = satir To satir + say - 1
            If (CDate(TextBox4.Value) >= s1.Cells(i, 4) And CDate(TextBox4.Value) <= s1.Cells(i, 5)) Then
                MsgBox "İzin Başlangıç Tarihi" & vbCrLf & s1.Cells(i, 4) & " - " & s1.Cells(i, 4) & " arasında olmamalı."
                TextBox4.SetFocus
                GoTo TarihHata
            End If
            If (CDate(TextBox5.Value) >= s1.Cells(i, 4) And CDate(TextBox5.Value) <= s1.Cells(i, 5)) Then
                MsgBox "İzin Bitiş Tarihi" & vbCrLf & s1.Cells(i, 4) & " - " & s1.Cells(i, 4) & " arasında olmamalı."
                TextBox5.SetFocus
                GoTo TarihHata
            End If
            If (CDate(TextBox4.Value) < s1.Cells(i, 4) And CDate(TextBox5.Value) > s1.Cells(i, 5)) Then
                MsgBox "İzin Tarihleri" & vbCrLf & s1.Cells(i, 4) & " - " & s1.Cells(i, 4) & " aralığını kapsamamalı."
                TextBox4.SetFocus
                GoTo TarihHata
            End If
        Next i
    End If
    TextBox6.Text = CLng(CDate(TextBox5.Text)) - CLng(CDate(TextBox4.Text)) + 1
    TextBox4 = Format(TextBox4, "dd.mm.yyyy")
    TextBox5 = Format(TextBox5, "dd.mm.yyyy")
    CommandButton1.Enabled = True
    CommandButton1.BackColor = &HFFFF&
    Exit Sub
TarihHata:
    CommandButton1.Enabled = False
    CommandButton1.BackColor = &HE0E0E0
    TextBox6 = ""
End Sub
 
Üst