Combobox'a yanlış veri girince SetFocus olayı

Katılım
20 Temmuz 2006
Mesajlar
171
Excel Vers. ve Dili
Office 2016 Tr
Merhaba,

Aşağıdaki kod ile UserForm üzerinde bulunan Combobox1'e yanlış veri girilince mesaj veriyor ve bir sonraki nesneye gidiyor.
İmleç ComboBox1'e gitmiyor.

Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Combobox1.ListIndex = -1 Then
Combobox1.Text = ""
MsgBox "Kitap seçiniz!", vbExclamation, "Uyarı"
Combobox1.SetFocus
Exit Sub
End If
End Sub
 

muratboz06

Destek Ekibi
Destek Ekibi
Katılım
23 Mart 2017
Mesajlar
568
Excel Vers. ve Dili
Office365 TR
Combobox1 den sonra Textbox1 nesnesine gittiğini varsayarsak;
Kod:
Private Sub TextBox1_Enter()
If ComboBox1.Text = "" Then
ComboBox1.SetFocus
End If
End Sub
 
Katılım
20 Temmuz 2006
Mesajlar
171
Excel Vers. ve Dili
Office 2016 Tr
Combobox1 den sonra Textbox1 nesnesine gittiğini varsayarsak;
Kod:
Private Sub TextBox1_Enter()
If ComboBox1.Text = "" Then
ComboBox1.SetFocus
End If
End Sub
Sayın Muratboz06
Denedim ancak 2 sefer MsgBox çıkıyor ve TexBox1 den sonraki nesneye gidiyor.
 

Korhan Ayhan

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

C++:
Option Explicit
Dim Kontrol As Boolean

Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If Kontrol = True Then Exit Sub
    If ComboBox1.ListIndex = -1 Then
        ComboBox1.Text = ""
        MsgBox "Kitap seçiniz!", vbExclamation, "Uyarı"
        Cancel = True
        Exit Sub
    End If
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Kontrol = True
End Sub
 
Katılım
20 Temmuz 2006
Mesajlar
171
Excel Vers. ve Dili
Office 2016 Tr
Deneyiniz.

C++:
Option Explicit
Dim Kontrol As Boolean

Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If Kontrol = True Then Exit Sub
    If ComboBox1.ListIndex = -1 Then
        ComboBox1.Text = ""
        MsgBox "Kitap seçiniz!", vbExclamation, "Uyarı"
        Cancel = True
        Exit Sub
    End If
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Kontrol = True
End Sub
Korhan bey denedim ancak öncekinden farklı olarak imleç herhangi bir nesneye gitmiyor.
ComboBox'a yanlış veri girişi yapıldığında ComboBox temizleniyor, uyarı mesajı geliyor. Buraya kadar aynı.
Sonrasında imlecin aynı ComboBox'a gitmesi gerekiyor.
 
Katılım
20 Temmuz 2006
Mesajlar
171
Excel Vers. ve Dili
Office 2016 Tr
Korhan bey bir de sayfamdaki diğer ComandButton'ları (Çıkış vs) tıkladığımda hep bu MsgBox çıkıyor.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,739
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Ben nesnenin UserForm üzerinde olduğunu düşünerek cevap vermiştim.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,739
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Yanlış veri girişi yapıldığında nesneyi terk etmemek için Exit olayında Cancel = True kullanılır. Bu komut nesneye fokuslanmanızı sağlar.

Fakat bu nesne aktif durumdayken formu kapatmak istediğinizde nesnenin Exit olayı devreye gireceği için yazdığınız kodlar tekrar çalışacaktır.

Bunu engellemek adına ben genellikle "Kontrol" adında bir boolean değişken tanımlayıp bunu çıkış butonlarında ve form kapanma olaylarında kullanıyorum.

Sizin içinde aynısını uyguladım. Dikkat ederseniz formunuzun kapanma olayına da kod yazdım.
 
Katılım
20 Temmuz 2006
Mesajlar
171
Excel Vers. ve Dili
Office 2016 Tr
Yanlış veri girişi yapıldığında nesneyi terk etmemek için Exit olayında Cancel = True kullanılır. Bu komut nesneye fokuslanmanızı sağlar.

Fakat bu nesne aktif durumdayken formu kapatmak istediğinizde nesnenin Exit olayı devreye gireceği için yazdığınız kodlar tekrar çalışacaktır.

Bunu engellemek adına ben genellikle "Kontrol" adında bir boolean değişken tanımlayıp bunu çıkış butonlarında ve form kapanma olaylarında kullanıyorum.

Sizin içinde aynısını uyguladım. Dikkat ederseniz formunuzun kapanma olayına da kod yazdım.
Gördüm Korhan bey, ben de yazdığınız kodun tamamını ilgili yerlere yazdım.
Yalnızca Option Explicit ifadesini nereye yazacağımı bulamadım. Formun initialize olayına yazdım, hata verdi. Bu hariç tüm kodları ilgili yerlere yazdım.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,739
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Option Explicit satırı "Dim" başlayan tanımlamaları zorunlu kılmak için kullanılır. Siz değişkenlerinizi yazarken tanımlama kullanmıyorsanız bu satırı silebilirsiniz.
 
Katılım
20 Temmuz 2006
Mesajlar
171
Excel Vers. ve Dili
Office 2016 Tr
Option Explicit satırı "Dim" başlayan tanımlamaları zorunlu kılmak için kullanılır. Siz değişkenlerinizi yazarken tanımlama kullanmıyorsanız bu satırı silebilirsiniz.
Ben de araştırmıştım konuyu, değişken tanımlarını genel olarak yapıyorum ancak yapmadıklarımda olabilir. Silmiştim ama yazdığım gibi sonuç alamadım. İlginize teşekkür ederim.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,739
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Örnek dosyanızı paylaşırsanız yardımcı olabiliriz.
 
Katılım
20 Temmuz 2006
Mesajlar
171
Excel Vers. ve Dili
Office 2016 Tr
Örnek dosya eklenmiştir. UserForm1 üzerindeki "Kitap" isimli ComboBox için deneyebiliriz.

 
Üst