• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

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

  • Konbuyu başlatan Konbuyu başlatan seckinb
  • Başlangıç tarihi Başlangıç tarihi
Katılım
9 Aralık 2018
Mesajlar
363
Excel Vers. ve Dili
Excel 2019 - 32 bit TR
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

  • 2020-03-22 19_09_48-Microsoft Excel - p2.png
    2020-03-22 19_09_48-Microsoft Excel - p2.png
    89.9 KB · Görüntüleme: 7
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
 
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
 
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 ?
 
DÖNGÜ önermiştim.

Neden kullanamadınız?
 
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.
 
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

Teşekkürler.
Gayet güzel çalışıyor.
 
Geri
Üst