• DİKKAT

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

TEXTBOX VERİ GİRİŞ SINIRI HK.

  • Konbuyu başlatan Konbuyu başlatan bkk
  • Başlangıç tarihi Başlangıç tarihi

bkk

Katılım
30 Aralık 2019
Mesajlar
186
Excel Vers. ve Dili
Ofis 2019
Merhabalar,

Ekte bulunan Excel çalışma kitabının aşağıdaki kuralları sağlamasını istiyorum yardımcı olabilir misiniz;
-Textbox1 sarı ile işaretli satırda bulunan değerlerin girişini kabul etmeli, aynı zamanda metinsel karakter kabul etmemeli (nokta ve virgül hariç),
-Textbox2 sarı ile işaretli sütunda bulunan değerlerin girişini kabul etmeli, aynı zamanda metinsel karakter kabul etmemeli (nokta ve virgül hariç),

Teşekkür ederim,
 

Ekli dosyalar

Merhaba,

Sadece sarı alanlardaki değerlere izin vereceği için ekstradan sayı kontrolü yaptırmadım.

Kod:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

    Dim c As Range
    
    Set c = [A1:A20].Find(TextBox1, , xlValues, xlWhole)
    If c Is Nothing Then
        MsgBox "Sadece A1:A20 aralığındaki verileri girebilirsiniz."
        TextBox1 = ""
        Exit Sub
    End If
    
End Sub

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)

    Dim c As Range
    
    Set c = [B1:J1].Find(TextBox2, , xlValues, xlWhole)
    If c Is Nothing Then
        MsgBox "Sadece B1:J1 aralığındaki verileri girebilirsiniz."
        TextBox2 = ""
        Exit Sub
    End If
    
End Sub
 
  • Beğen
Reactions: bkk
Merhaba,

Ömer bey yanıtlamış.
Sadece rakam girişine örnek ise :

Kod:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

    If Not IsNumeric(TextBox1.Value) Then
        MsgBox "Sadece Rakamlara İzin Verilir...."
        Cancel = True
    End If
    
End Sub
 
  • Beğen
Reactions: bkk
Bu da farklı bir alternatif olsun.

Kod:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    txt_Sinir "A1:A20", textbox1
End Sub

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    txt_Sinir "B1:J1", textbox2
End Sub

Sub txt_Sinir(Alan As String, txt As textbox)
    Dim c As Range
    Set c = Range(Alan).Find(txt, , xlValues, xlWhole)
    If c Is Nothing Then
        MsgBox "Sadece " & Alan & "aralığındaki verileri girebilirsiniz."
        txt = ""
    End If
End Sub
 
  • Beğen
Reactions: bkk
Cevaplarınız için ve vakit ayırdığınız için ayrı ayrı teşekkür ediyorum,
Her örneği inceleyip uygun olanı kullanacağım :)
-Bir ufak sorum şu alacak; nokta ve virgül toleransını nasıl sağlayabilirim?
 
Hem sadece belirttiğiniz alandaki rakamlar olsun ve hem de virgül kullanılsın biraz mantıksız olmuyor mu?
Eğer alandaki rakamlarda virgül varsa zaten kullanabilirsiniz, yoksa kullanamazsınız. Benim ve sayın Ömer'in kodları bu mantıkladır.
 
  • Beğen
Reactions: bkk
Hem sadece belirttiğiniz alandaki rakamlar olsun ve hem de virgül kullanılsın biraz mantıksız olmuyor mu?
Eğer alandaki rakamlarda virgül varsa zaten kullanabilirsiniz, yoksa kullanamazsınız. Benim ve sayın Ömer'in kodları bu mantıkladır.
Profesyonel bakış açısında haklısınız acemiliğime verin , aslında amacım yeri gelmişken o kodlamayı da görebilmek, izninizle sorumu şu şekilde değiştirebilir miyim;" Sadece sayısal veri girdiğim textboxlarda ve nokta virgül toleransını nasıl sağlayabilirim?"
 
Merhaba,

toleleranstan ne amaçladığınızı anlamadım ama rakamı nokta ya da virgüllü girişten kastediyorsanız benim verdiğim örnekte zaten buna izin veriyor, yeter ki nokta ve virgül yerinde olsun :)
 
  • Beğen
Reactions: bkk
Alternatif olarak, yazarken kontrol isterseniz aşağıdaki gibi deneyebilirsiniz.

Kod:
Private Sub TextBox1_Change()
If IsNumeric(TextBox1) = False Then CreateObject("WScript.Shell").SendKeys "{bs}", True
End Sub

Private Sub TextBox2_Change()
If IsNumeric(TextBox2) = False Then CreateObject("WScript.Shell").SendKeys "{bs}", True
End Sub
 
  • Beğen
Reactions: bkk
Geri
Üst