TextBox 'a Veri Yazdırma

huseyinn31

Altın Üye
Katılım
7 Mart 2021
Mesajlar
46
Excel Vers. ve Dili
2019 - Türkçe
Altın Üyelik Bitiş Tarihi
10-10-2025
Merhaba, üzerinde çalıştığım bir proje için video izleyerek proje adımlarını tamamlamaya çalışıyorum. Muhtemelen kısa bir kod bloğu ile çözülebilecek bir olay olduğunu düşünüyorum ama kodları toparlayamadım.

Userform üzerinde TextBox1, TextBox2 ve TextBox3 var.
Sheet1 'in A sütununda TextBox1 'e yazılacak veriler, B sütununda ise TextBox2 'ye yazılacak veriler var. Sheet 2 'nin A sütunu ile Sheet 1 'in A sütunu aynı verileri içeriyor.
TextBox1 ve TextBox2 'ye girilen veriler birbiri ile eşleşirse (bir nevi şifre) textbox3 'e Sheet 2 'nin B sütunundaki veriyi yazdırsın.
Yalnız bu veri yazdırma işlemi herhangi bir butona basılmadan yapılmalıdır. Şifrenin son rakamı yazıldığında doğru ise textbox 3 'e yazdırsın.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,256
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

Şifrenin son rakamı yazıldığında doğru ise textbox 3 'e yazdırsın.
Bu bölümdeki ölçütünüzde şifrenin uzunluğu belli mi?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,256
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bunu neden sordum...

"şifrenin son rakamı yazıldığında" dediğiniz için ya nesneyi terk ettiğinizde veri kontrolü olabilir. Ya da yazma anında kontrol yapılabilir. Yazma anında kontrolün sağlıklı olması için uzunluğu bilmekte fayda var.
 

huseyinn31

Altın Üye
Katılım
7 Mart 2021
Mesajlar
46
Excel Vers. ve Dili
2019 - Türkçe
Altın Üyelik Bitiş Tarihi
10-10-2025
Bunu neden sordum...

"şifrenin son rakamı yazıldığında" dediğiniz için ya nesneyi terk ettiğinizde veri kontrolü olabilir. Ya da yazma anında kontrol yapılabilir. Yazma anında kontrolün sağlıklı olması için uzunluğu bilmekte fayda var.
O zaman şifre için 5 rakamlı diyebiliriz hocam
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,256
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Örnek dosyanız varsa paylaşırsanız onun üzerinden ilerleyelim.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Dosyanızı imzamda belirttiğim gibi harici siteden paylaşabilirsiniz.
 

huseyinn31

Altın Üye
Katılım
7 Mart 2021
Mesajlar
46
Excel Vers. ve Dili
2019 - Türkçe
Altın Üyelik Bitiş Tarihi
10-10-2025
Örnek dosyanız varsa paylaşırsanız onun üzerinden ilerleyelim.
Hocam örnek dosyayı paylaştım.

1- Sicil No ve Şifre alanlarına veri girildiğinde SenList sheetinden kontrol yapıyor. Bu 2 veri SenList sayfasında yazan bilgiler ile doğru bir şekilde eşleşirse "Üye Adı 1" textbox alanına SenList sheeti B sütununda yazan adı soyadı bilgisi yazılmalıdır.

2- Dosyada ayrıca oy kullanan kişileri kontrol amacıyla OyKul sheeti mevcut. Oyu Kaydet butonuna basıldığında sicil no 'yu OyKul sheetine Oy Kullandı olarak yazdırıyor. Yalnız sicil numarası olsun veya olmasın yazdırmaya devam ediyor. Bunu da sicil no ve şifre doğru yazılmışsa OyKul sayfasına yazdırsın şekline çevirmemiz mümkün mü?
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,256
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Formunuzdaki kodları silip aşağıdaki kodları deneyiniz.

C++:
Dim S1 As Worksheet

Private Sub OyuKaydet_Click()
    Dim Son As Long
    
    If Me.SicilNo = "" Then
        MsgBox "Sicil no boş bırakılamaz!", vbCritical
        Me.SicilNo.SetFocus
        Exit Sub
    End If

    If Me.Sifre = "" Then
        MsgBox "Şifre boş bırakılamaz!", vbCritical
        Me.Sifre.SetFocus
        Exit Sub
    End If

    Son = S1.Cells(S1.Rows.Count, 1).End(xlUp).Row + 1
    
    S1.Cells(Son, 1).Value = Me.SicilNo
    S1.Cells(Son, 3).Value = "Oy Kullandı"
    
    MsgBox "Oy kaydı yapılmıştır.", vbInformation
End Sub

Private Sub SicilNo_Change()
    If Len(Me.SicilNo) = 3 Then
        If WorksheetFunction.CountIf(S1.Range("A:A"), Me.SicilNo) > 0 Then
            MsgBox "Bu sicil numarası ile daha önce oy kullanılmıştır!", vbCritical
            Me.SicilNo.Value = ""
            Exit Sub
        End If
    End If
End Sub

Private Sub Sifre_Change()
    Dim Bul As Range, Adres As String
    
    Me.OyuKaydet.Enabled = False
    
    If Len(Me.Sifre.Text) = 5 Then
        Set Bul = Sheets("SenList").Range("A:A").Find(SicilNo.Text, , , xlWhole)
        If Not Bul Is Nothing Then
            Adres = Bul.Address
            Do
                If Me.Sifre.Text = Bul.Offset(, 2).Value Then
                    Me.SicilGoster.Value = Bul.Offset(, 1).Value
                    Me.OyuKaydet.Enabled = True
                    Exit Do
                End If
                Set Bul = Sheets("SenList").Range("A:A").FindNext(Bul)
            Loop While Not Bul Is Nothing And Bul.Address <> Adres
        End If
    End If
End Sub

Private Sub UserForm_Initialize()
    Set S1 = Sheets("OyKul")
    Me.SicilNo.MaxLength = 3
    Me.Sifre.MaxLength = 5
    Me.OyuKaydet.Enabled = False
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Set S1 = Nothing
End Sub
 

huseyinn31

Altın Üye
Katılım
7 Mart 2021
Mesajlar
46
Excel Vers. ve Dili
2019 - Türkçe
Altın Üyelik Bitiş Tarihi
10-10-2025
Korhan hocam göndermiş olduğum userform 'a 2 aday için checkbox ekledim. Bunlar true döndüğünde Sonuc sheetindeki checkbox 'ın ait olduğu hücreye 1, false dönerse 0 yazıyor. Yalnız her oy kullanımında 2. satır değişiyor. İlgili checkbox için boş olan son satıra ilerlemiyor. Döngüyü mü yazamıyorum? Textbox üzerinden başka bir örnek denedim onu yaptım fakat checkbox ile ilk deneme olduğu için kodları tamamlayamadım.

Checkbox seçimini sınırlayabiliyor muyuz? Örneğin 3 checkbox varsa en az birini işaretlemeniz gerekmektedir gibi.

Kod:
    If Aday1.Value = True Then
    Sheets("Sonuc").Range("A2") = "1"
    Else
    Sheets("Sonuc").Range("A2") = "0"
    End If
    
    If Aday2.Value = True Then
    Sheets("Sonuc").Range("B2") = "1"
    Else
    Sheets("Sonuc").Range("B2") = "0"
    End If
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,256
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
İlk sorunuz için hücre adresi vererek kayıt işlemini yaptığınız için sürekli aynı hücreye veri kaydı yapılıyor. Bunu dinamik hale getirmelisiniz ki sürekli alta doğru ilerlesin.

Mesela ben örnek dosyanızda S2 adında bir değişken daha tanımladım. Bunuda "Sonuc" sayfasına atadım. Sonra aşağıdaki kod ile alt alta kayıt yapabildim.

S2.Cells(S2.Rows.Count, 1).End(3)(2, 1) = Abs(CLng(Aday1.Value))
S2.Cells(S2.Rows.Count, 2).End(3)(2, 1) = Abs(CLng(Aday2.Value))



Formunuza bir buton ekledim ve aşağıdaki kodu yazdım. Bu kod form üzerindeki 2 CheckBox nesnesini kontrol eder. Daha fazla CheckBox kullanmayı düşünüyorsanız 2 değerlerini değiştirmelisiniz. Ayrıca kodu kendi "OYU KAYDET" butonunuza uyarlamalısınız.

C++:
Private Sub CommandButton1_Click()
    Dim X As Byte
   
    For X = 1 To 2
        If Me.Controls("Aday" & X) = False Then
            Say = Say + 1
        End If
    Next
   
    If Say = 2 Then
        MsgBox "En az bir seçim yapmalısınız!", vbCritical
        Exit Sub
    End If
End Sub
 

huseyinn31

Altın Üye
Katılım
7 Mart 2021
Mesajlar
46
Excel Vers. ve Dili
2019 - Türkçe
Altın Üyelik Bitiş Tarihi
10-10-2025
Formunuza bir buton ekledim ve aşağıdaki kodu yazdım. Bu kod form üzerindeki 2 CheckBox nesnesini kontrol eder. Daha fazla CheckBox kullanmayı düşünüyorsanız 2 değerlerini değiştirmelisiniz. Ayrıca kodu kendi "OYU KAYDET" butonunuza uyarlamalısınız.

C++:
Private Sub CommandButton1_Click()
    Dim X As Byte
  
    For X = 1 To 2
        If Me.Controls("Aday" & X) = False Then
            Say = Say + 1
        End If
    Next
  
    If Say = 2 Then
        MsgBox "En az bir seçim yapmalısınız!", vbCritical
        Exit Sub
    End If
End Sub
Korhan hocam kod bloğunu yerleştirdim fakat uyarı vermesine rağmen sonuç sayfasına checkbox true ise 1 yazdırmaya devam ediyor.
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,256
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Çünkü bu kontrolü yapan satırları kayıt yapan satırların altına yerleştirmişsiniz. Üstüne alırsanız sorunun düzelmesi gerekir.
 
Üst