Soru Textbox'lar boş ise kodun çalışmasına izin vermemek

Katılım
9 Aralık 2018
Mesajlar
363
Excel Vers. ve Dili
Excel 2019 - 32 bit TR
Altın Üyelik Bitiş Tarihi
10-06-2024
Hücreler boş kaldığı takdirde hata mesajı alıyorum. Bunu önlemek için "submit" kodunun çalışmasından önce hücreler boş mu diye kontrol etmesini nasıl sağlayabilirim?

18 tane textbox var kontrol etmesi gereken.

tbWBC
tbHB

diye gidiyor adları.
 

Ekli dosyalar

Katılım
9 Aralık 2018
Mesajlar
363
Excel Vers. ve Dili
Excel 2019 - 32 bit TR
Altın Üyelik Bitiş Tarihi
10-06-2024
PHP:
    If Trim(tbWBC.Value) = "" And Me.Visible Then
        MsgBox "WBC hücresini boş bırakmayınız", vbCritical, "Hata"
        Cancel = True
        Me.tbWBC.SetFocus
        Exit Sub
        End If

bu şekilde 1 tanesi için engellemeyi başardım.

şimdi 17 tanesi için bunu nasıl kısa bir şekilde uygularım?

tbWBC
tbHB
tbPLT
tbUREA
tbKREA
tbTBIL
tbDBIL
tbINR
tbKALS
tbALB
tbNSE
tbKROGA
tbCEA
tbRBC
tbAST
tbALT
tbTSH
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,521
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Döngüler programcılığın temelidir.

Bu sorguyu her textbox nesnesinin EXIT olayına yazmak yerine kayıt yapan butona yazmanız daha sağlıklı olacaktır.

C++:
Option Explicit

Private Sub CommandButton1_Click()
    Dim TBox As Object
    
    For Each TBox In Me.Controls
        If TypeName(TBox) = "TextBox" Then
            If TBox = Empty Then
                MsgBox "Kayıt işlemi için veri girişini tamamlayınız!", vbCritical
                TBox.SetFocus
                Exit Sub
            End If
        End If
    Next

    Rem Kayıt kodlarınız...
    Rem Kayıt kodlarınız...
    Rem Kayıt kodlarınız...
    Rem Kayıt kodlarınız...
End Sub
 
Katılım
9 Aralık 2018
Mesajlar
363
Excel Vers. ve Dili
Excel 2019 - 32 bit TR
Altın Üyelik Bitiş Tarihi
10-06-2024
PHP:
'Yeni kan girişinde uyarıda bulunmama gerek olmayacak. IF doğru ise tuşa baştırmayacak!

Private Sub submit1_Click()
    Dim ssheet1 As Worksheet
    'BOŞ OLUNCA DURDURMA
If Trim(tbWBC.Value) = "" And Me.Visible Then
        MsgBox "WBC hücresini boş bırakmayınız", vbCritical, "Hata"
        Cancel = True
        Me.tbWBC.SetFocus
        Exit Sub
        End If
    

If Trim(tbHB.Value) = "" And Me.Visible Then
    MsgBox "HB hücresini boş bırakmayınız", vbCritical, "Hata"
        Cancel = True
        Me.tbHB.SetFocus
        Exit Sub
        End If

If Trim(tbPLT.Value) = "" And Me.Visible Then
    MsgBox "PLT hücresini boş bırakmayınız", vbCritical, "Hata"
        Cancel = True
        Me.tbPLT.SetFocus
        Exit Sub
        End If

If Trim(tbUREA.Value) = "" And Me.Visible Then
    MsgBox "Üre hücresini boş bırakmayınız", vbCritical, "Hata"
        Cancel = True
        Me.tbUREA.SetFocus
        Exit Sub
        End If

If Trim(tbKREA.Value) = "" And Me.Visible Then
        MsgBox "Kreatinin hücresini boş bırakmayınız", vbCritical, "Hata"
        Cancel = True
        Me.tbKREA.SetFocus
        Exit Sub
        End If

If Trim(tbTBIL.Value) = "" And Me.Visible Then
        MsgBox "Total bilirubin hücresini boş bırakmayınız", vbCritical, "Hata"
        Cancel = True
        Me.tbTBIL.SetFocus
        Exit Sub
        End If

If Trim(tbDBIL.Value) = "" And Me.Visible Then
        MsgBox "Direk bilirubin hücresini boş bırakmayınız", vbCritical, "Hata"
        Cancel = True
        Me.tbDBIL.SetFocus
        Exit Sub
        End If


If Trim(tbINR.Value) = "" And Me.Visible Then
        MsgBox "INR hücresini boş bırakmayınız", vbCritical, "Hata"
        Cancel = True
        Me.tbINR.SetFocus
        Exit Sub
        End If

If Trim(tbTG.Value) = "" And Me.Visible Then
        MsgBox "TG hücresini boş bırakmayınız", vbCritical, "Hata"
        Cancel = True
        Me.tbTG.SetFocus
        Exit Sub
        End If

If Trim(tbALB.Value) = "" And Me.Visible Then
        MsgBox "Albumin hücresini boş bırakmayınız", vbCritical, "Hata"
        Cancel = True
        Me.tbALB.SetFocus
        Exit Sub
        End If

If Trim(tbATG.Value) = "" And Me.Visible Then
        MsgBox "Anti-TG hücresini boş bırakmayınız", vbCritical, "Hata"
        Cancel = True
        Me.tbATG.SetFocus
        Exit Sub
        End If

If Trim(tbKALS.Value) = "" And Me.Visible Then
        MsgBox "Kalsitonin hücresini boş bırakmayınız", vbCritical, "Hata"
        Cancel = True
        Me.tbKALS.SetFocus
        Exit Sub
        End If

If Trim(tbST4.Value) = "" And Me.Visible Then
        MsgBox "Serbest T4 hücresini boş bırakmayınız", vbCritical, "Hata"
        Cancel = True
        Me.tbST4.SetFocus
        Exit Sub
        End If

If Trim(tbRBC.Value) = "" And Me.Visible Then
        MsgBox "RBC hücresini boş bırakmayınız", vbCritical, "Hata"
        Cancel = True
        Me.tbRBC.SetFocus
        Exit Sub
        End If

If Trim(tbAST.Value) = "" And Me.Visible Then
        MsgBox "AST hücresini boş bırakmayınız", vbCritical, "Hata"
        Cancel = True
        Me.tbAST.SetFocus
        Exit Sub
        End If

If Trim(tbALT.Value) = "" And Me.Visible Then
        MsgBox "ALT hücresini boş bırakmayınız", vbCritical, "Hata"
        Cancel = True
        Me.tbALT.SetFocus
        Exit Sub
        End If
            
Set ssheet1 = ThisWorkbook.Sheets("Kanlar")
    nr = ssheet1.Cells(Rows.count, 1).End(xlUp).Row + 1
    ssheet1.Cells(nr, 1) = CDate(Format(Me.DTpick1(), "dd.mm.yyyy"))
ssheet1.Cells(nr, 2) = CDec(Me.tbWBC)
ssheet1.Cells(nr, 3) = CDec(Me.tbHB)
ssheet1.Cells(nr, 4) = CDec(Me.tbPLT)
ssheet1.Cells(nr, 5) = CDec(Me.tbUREA)
ssheet1.Cells(nr, 6) = CDec(Me.tbKREA)
ssheet1.Cells(nr, 7) = CDec(Me.tbTBIL)
ssheet1.Cells(nr, 8) = CDec(Me.tbDBIL)
ssheet1.Cells(nr, 9) = CDec(Me.tbINR)
ssheet1.Cells(nr, 10) = CDec(Me.tbTG)
ssheet1.Cells(nr, 11) = CDec(Me.tbALB)
ssheet1.Cells(nr, 12) = CDec(Me.tbATG)
ssheet1.Cells(nr, 13) = CDec(Me.tbKALS)
ssheet1.Cells(nr, 14) = CDec(Me.tbST4)
ssheet1.Cells(nr, 15) = CDec(Me.tbRBC)
ssheet1.Cells(nr, 16) = CDec(Me.tbAST)
ssheet1.Cells(nr, 17) = CDec(Me.tbALT)
ssheet1.Cells(nr, 18) = CDec(Me.tbTSH)
    
    For nInputRow = 1 To 18
        If ssheet1.Cells(nr, nInputRow) = 0 Then
            ssheet1.Cells(nr, nInputRow).FormulaLocal = "=yoksay()"
        End If
    Next nInputRow
End Sub

Bu şekilde çalıştırabildim. Sanırım kısaltmam mümkün değil ?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,521
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
DÖNGÜ önermiştim.

Neden kullanamadınız?
 
Katılım
9 Aralık 2018
Mesajlar
363
Excel Vers. ve Dili
Excel 2019 - 32 bit TR
Altın Üyelik Bitiş Tarihi
10-06-2024
for next döngüsüne almayı denedim ama kontrollerin isimleri 1-2-3-4 gibi sıralı değildi.
o yüzden adapte edemedim.


Kontrollerin özelliğinden dolayı isimlerini korumam gerekiyor.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,521
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Benim önerdiğim kodda nesnelerin numaraları yok. Nesnelerin tipine göre işlem yapılıyor.

Dilenirse döngü içinde isim kontrolü yapılarak bazı nesneler devre dışı da bırakılabilir.

Örnek dosyayı inceleyiniz.
 

Ekli dosyalar

Katılım
9 Aralık 2018
Mesajlar
363
Excel Vers. ve Dili
Excel 2019 - 32 bit TR
Altın Üyelik Bitiş Tarihi
10-06-2024
Teşekkürler.
Gayet güzel çalışıyor.
 
Üst