Soru Textbox içine yapılacak girişleri sınırlamak

seckinb

Altın Üye
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
0,5-50 arasındaki değerlerin girilmesini, sayı dışı değerlerin yazılamamasını ve boş bırakılmamasını nasıl sağlarım?

çeşitli kodlar buldum, tam modifiye edemedim.

dahası burada yazan değerlerin sayfaya aktarımında şöyle bir kod kullanıyorum.


PHP:
Private Sub submit1_Click()
Dim ssheet1 As Worksheet
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.tbKALS)
ssheet1.Cells(nr, 11) = CDec(Me.tbALB)
ssheet1.Cells(nr, 12) = CDec(Me.tbNSE)
ssheet1.Cells(nr, 13) = CDec(Me.tbKROGA)
ssheet1.Cells(nr, 14) = CDec(Me.tbCEA)
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

Boş bırakmayı önlemek için kullandığım kod.

PHP:
Private Sub tbWBC_Exit(ByVal Cancel As MSForms.ReturnBoolean)

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

bu kodun boş ya da uyumsuz değeri fark edip gönderimi engellemesini nasıl sağlarım?
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,840
Excel Vers. ve Dili
2019 Türkçe
Merhaba.
Son eklediğiniz kodların yerine aşağıdaki kodları kullanabilirsiniz.

Kod:
Private Sub tbWBC_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If Trim(tbWBC.Value) = "" And Me.Visible Then
        MsgBox "WBC hücresini boş bırakmayınız", vbCritical, "Hata"
        Cancel = True
    ElseIf tbWBC.Value < 0.5 Or tbWBC.Value > 50 Then
        MsgBox "WBC sadece rakam olmalıdır ve bu rakam 0,5 ile 50 arasında olmalıdır.", vbCritical, "Hata"
        Cancel = True
    End If
End Sub
 

seckinb

Altın Üye
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
Merhaba.
Son eklediğiniz kodların yerine aşağıdaki kodları kullanabilirsiniz.

Kod:
Private Sub tbWBC_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If Trim(tbWBC.Value) = "" And Me.Visible Then
        MsgBox "WBC hücresini boş bırakmayınız", vbCritical, "Hata"
        Cancel = True
    ElseIf tbWBC.Value < 0.5 Or tbWBC.Value > 50 Then
        MsgBox "WBC sadece rakam olmalıdır ve bu rakam 0,5 ile 50 arasında olmalıdır.", vbCritical, "Hata"
        Cancel = True
    End If
End Sub

Doğrulamak adına soruyorum, hiç yazmadan,
submit1_Click

çalıştırılırsa boş olanı göndermeye kalkar mı?
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,840
Excel Vers. ve Dili
2019 Türkçe
Onu değerlendirmemiştim.
Kodlar aşağıdaki gibi olmalı.

Kod:
Dim Kontrol As Boolean

Private Sub submit1_Click()
    Dim ssheet1 As Worksheet
    If Kontrol Then
        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.tbKALS)
    ssheet1.Cells(nr, 11) = CDec(Me.tbALB)
    ssheet1.Cells(nr, 12) = CDec(Me.tbNSE)
    ssheet1.Cells(nr, 13) = CDec(Me.tbKROGA)
    ssheet1.Cells(nr, 14) = CDec(Me.tbCEA)
    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

Private Sub tbWBC_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If Trim(tbWBC.Value) = "" And Me.Visible Then
        MsgBox "WBC hücresini boş bırakmayınız", vbCritical, "Hata"
        Cancel = True
    ElseIf tbWBC.Value < 0.5 Or tbWBC.Value > 50 Then
        MsgBox "WBC sadece rakam olmalıdır ve bu rakam 0,5 ile 50 arasında olmalıdır.", vbCritical, "Hata"
        Cancel = True
    End If
    Kontrol = Cancel
End Sub
 

seckinb

Altın Üye
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
Private Sub tbWBC_Exit

şeklinde

diğer 17 tane textbox için kodu modifiye etmeyi planlıyorum. hepsine "kontrol" tanımlamasını tekrar tekrar yapmak gerekir mi?

tbTSH

tbCEA

gibi.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,840
Excel Vers. ve Dili
2019 Türkçe
Private Sub tbWBC_Exit

şeklinde

diğer 17 tane textbox için kodu modifiye etmeyi planlıyorum. hepsine "kontrol" tanımlamasını tekrar tekrar yapmak gerekir mi?

tbTSH

tbCEA

gibi.
Her Private Sub ....._Exit içine Kontrol = Cancel eklemeniz yeterli. Kontrol = True olduğunda submit1_Click butonu çalışmayacaktır.
 

seckinb

Altın Üye
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
Her Private Sub ....._Exit içine Kontrol = Cancel eklemeniz yeterli. Kontrol = True olduğunda submit1_Click butonu çalışmayacaktır.
215537


çalışmadı.
hücreden çıkarken doğrulamayı yapıyor. onu başardım lakin kaydı eklerken sorun yaşıyorum. boş hücreleri göndermeye çalışıyor.
 

seckinb

Altın Üye
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
Her Private Sub ....._Exit içine Kontrol = Cancel eklemeniz yeterli. Kontrol = True olduğunda submit1_Click butonu çalışmayacaktır.

PHP:
Private Sub submit1_Click()
    Dim Kontrol As Boolean
    Dim ssheet1 As Worksheet
    If Kontrol Then
        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.tbKALS)
    ssheet1.Cells(nr, 11) = CDec(Me.tbALB)
    ssheet1.Cells(nr, 12) = CDec(Me.tbNSE)
    ssheet1.Cells(nr, 13) = CDec(Me.tbKROGA)
    ssheet1.Cells(nr, 14) = CDec(Me.tbCEA)
    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

Private Sub tbWBC_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If Trim(tbWBC.Value) = "" And Me.Visible Then
        MsgBox "WBC hücresini boş bırakmayınız", vbCritical, "Hata"
        Cancel = True
    ElseIf tbWBC.Value < 0.1 Or tbWBC.Value > 200 Then
        MsgBox "WBC sadece rakam olmalıdır ve bu rakam 0,1 ile 200 arasında olmalıdır.", vbCritical, "Hata"
        Cancel = True
    End If
    Kontrol = True
End Sub
 
Üst