Textbox ve Comboboxın boş olduğunu döngü ile kontrol et

Korhan Ayhan

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

Aşağıda kayıt işlemi için kullandığım kodda form üzerinde bulunan Textboxların ve Comboboxın boş olup olmadığını döngü ile kontrol ediyorum fakat bunu iki döngüyle değilde tek döngüyle nasıl yapabilirim.
Daha doğrusu Textboxları kontrol ettiğim döngünün içine Comboboxıda nasıl ekleyebilirim.Kodların bu haliyle işleyişinde şöyle bir sıkıntı oluyor diyelimki giriş yaparken Combobox1 ve Textbox5 i boş bıraktım ve kayıt tuşuna bastığımda ilk olarak Textboxları kontrol ettiği için doğal olarak Textbox5 i focusluyor benim istediğim ise sıra ile hangi box boşsa onu seçebilmek.

Userform üzerindeki sıralama;

Textbox1
Textbox2
Textbox3
Textbox4
Combobox1
Textbox5

Kullandığım kodlar;

Private Sub CommandButton2_Click()
Application.ScreenUpdating = False

For X = 1 To 5
If Controls("TextBox" & X).Value = Empty Then
MsgBox ("Kayıt işlemi için gerekli tüm bölümlere veri girmelisiniz." _
& Chr(10) & "Lütfen boş bıraktığınız bölümleri doldurunuz."), vbExclamation, "Dikkat !"
Controls("TextBox" & X).SetFocus
Exit Sub
End If
Next

If ComboBox1.Value = Empty Then
MsgBox ("Kayıt işlemi için gerekli tüm bölümlere veri girmelisiniz." _
& Chr(10) & "Lütfen boş bıraktığınız bölümleri doldurunuz."), vbExclamation, "Dikkat !"
ComboBox1.SetFocus
Exit Sub
End If
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Tek döngü içinde yapılabilir ama userformda başka kontrollerin olması, kontrolü zorlaştırır, bence en iyisi kodlarınızda en önce comboboxu kontrol ettirmenizdir. Tek döngü içinde aşağıdaki gibi bir döngü kullanabilirsiniz. Kodun doğru çalışması için kontrollerin tab sıralamasını yukarıdaki sıralamaya uygun hale getirin. Belki daha kısa bir çözümde bulunabilir.

[vb:1:844356cd04]Private Sub CommandButton2_Click()
For a = 0 To Controls.Count - 1
If Controls(a).TabIndex < 6 Then
If Controls(a).Value = "" Then
MsgBox ("Kayıt işlemi için gerekli tüm bölümlere veri girmelisiniz." _
& Chr(10) & "Lütfen boş bıraktığınız bölümleri doldurunuz."), vbExclamation, "Dikkat !"
Controls(a).SetFocus
Exit Sub
End If
End If
Next
End Sub[/vb:1:844356cd04]
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,159
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Sn. leventm öneriniz ve çözümünüz için çok teşekkür ederim. :arkadas:
 
Katılım
18 Aralık 2022
Mesajlar
42
Excel Vers. ve Dili
2010
Kolay gelsin. İyi çalışmalar. TakvimGun1, TakvimGun2,.....TakvimGun20 isimli comboboxlarımlailgili aşağıdaki kodu herbiri için ayrı ayrı yazmak yerine tek bir kod ile döngü ile yapabilirmiyim.?
Teşekkür ederim.

Set ws = Sheets("Ajanda_Takvim")
For i = 2 To ws.Range("A65536").End(3).Row
If WorksheetFunction.CountIf(ws.Range("A1:A" & i), ws.Cells(i, "A")) = 1 Then
Me.TakvimGun1.AddItem ws.Cells(i, "A").Value
End If
Next i
 
Katılım
18 Aralık 2022
Mesajlar
42
Excel Vers. ve Dili
2010
For a = 1 To 20
Me.Controls("TakvimYıl" & a).Locked = True
Me.Controls("TakvimGun" & a).Locked = True
Me.Controls("TakvimAy" & a).Locked = True
Next a
 
Üst