• DİKKAT

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

Textboxa sadece rakam veya sadece harf girebilmek

Korhan Ayhan

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

Aşağıdaki kodlar yardımıyla textboxa sadece harf girilmesini sağlıyorum fakat şöyle bir sorunum var. Þöyleki 4-5 harf yazdıktan ok tuşlarıyla yazdığım harflerin arasına gelip rakam yazdığımda kısıtlama işe yaramıyor bu kodları hiçbir şekilde rakam girişine müsade etmeyecek şekilde nasıl düzenleyebilirim. Aynı kodlar yardımıyla başka bir textboxa ise sadece rakamların girilebilmesini nasıl sağlarım.

Sonuç olarak amacım bir textboxa sadece harf veya sadece rakam girmek istiyorum. Fakat rakam girişine kısıtladığım textboxa hiçbir şekilde harf ve diğer karakterler girilemesin veya harf girişine kısıtladığım textboxa hiçbir şekilde rakam ve diğer karakterler girilemesin istiyorum.

Private Sub TextBox1_Change()
If Right(TextBox1, 1) Like "[!A-Z]" Then SendKeys "{BS}"
If Left(TextBox1, 1) Like "[!A-Z]" Then SendKeys "{BS}"
End Sub

Private Sub TextBox2_Change()
If Right(TextBox2, 1) Like "[!0-9]" Then SendKeys "{BS}"
If Left(TextBox2, 1) Like "[!0-9]" Then SendKeys "{BS}"
End Sub
 
Private Sub TextBox1_Change()
If TextBox1 = vbNullString Then Exit Sub
If Not IsNumeric(TextBox1) Then
MsgBox "Lütfen rakam giriniz"
TextBox1 = vbNullString
End If
End Sub

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox2 = vbNullString Then Exit Sub
If IsNumeric(TextBox2) Then
MsgBox "Lütfen harf giriniz"
TextBox2 = vbNullString
Cancel = True
End If
End Sub
 
Sn. fructose,

Cevabınız için teşekkür ederim peki kodlarda yanlış bir karakter girişi yapıldığında uyarı veriyor ve textboxın içeriğini komple siliyor sadece yanlış yazılan karakteri sildirebilirmiyiz.
 
Yıllar önce VBA'ye ilk başladığım zamanlarda hazırladığım bir kod.

Baktım da, hala işe yarıyor
:mrgreen:

Kod:
Private Sub TextBox1_Change()
    Dim dizi As String, karakter As String
    Dim i As Integer
    dizi = "aAbBcCçÇdDeEfFgGgGhHiIiIjJkKlLmMnNoOöÃ?pPrRsSsStTuUüÜqQvVwWxXyYzZ"
    If TextBox1 = "" Then Exit Sub
    i = 1
devam:
    If i > 64 Then
    MsgBox "Dikkat, hatali giris yapildi. Son girilen geçersiz karakter silinecek !"
    TextBox1 = Mid(TextBox1, 1, Len(TextBox1) - 1)
    Exit Sub
    End If
    karakter = Mid(dizi, i, 1)
    If Right(TextBox1, 1) = karakter Then Exit Sub
    i = i + 1
    GoTo devam:
End Sub
'
Private Sub TextBox2_Change()
    Dim dizi As String, karakter As String
    Dim i As Integer
    dizi = "0123456789"
    If TextBox2 = "" Then Exit Sub
    i = 1
devam:
    If i > 10 Then
    MsgBox "Dikkat, hatali giris yapildi. Son girilen geçersiz karakter silinecek !"
    TextBox2 = Mid(TextBox2, 1, Len(TextBox2) - 1)
    Exit Sub
    End If
    karakter = Mid(dizi, i, 1)
    If Right(TextBox2, 1) = karakter Then Exit Sub
    i = i + 1
    GoTo devam:
End Sub
 
Aşağıdaki gibi deneyin.

[vb:1:0ef1fb5510]Private Sub TextBox1_Change()
For a = 1 To Len(TextBox1)
If IsNumeric(Mid(TextBox1, a, 1)) = True Or Mid(TextBox1, a, 1) Like "[!A-Z]" Then SendKeys "{BS}"
Next
End Sub
[/vb:1:0ef1fb5510]
 
Sn. Haluk,

Verdiğiniz kodları denedim fakat tam olarak istediğim sonucu vermiyor neden derseniz örneğin textbox1 e harf yazıyorum daha sonra sol ok tuşuyla birkaç karakter geriye gidip rakam yazdığımda uyarı vermiyor ve kısıtlama geçerli olmuyor yinede ilginizden dolayı teşekkür ederim. Tam bir örnek dosya yollayacaktım ki Sn. leventm sorunu çözmüş kendisinede ilgisinden dolayı teşekkür ediyorum.
 
Private Sub TextBox1_Change()
For a = 1 To Len(TextBox1)
If IsNumeric(Mid(TextBox1, a, 1)) = True Or Mid(TextBox1, a, 1) Like "[!aAbBcCçÇdDeEfFgGgGhHiIiIjJkKlLmMnNoOöÃ?pPrRsSsStTuUüÜqQvVwWxXyYzZ]" Then SendKeys "{BS}"
Next
End Sub

şeklinde olursa hem büyük harf hem küçük harfe izin verir "[!A-Z]" yazınca sanırım sadece büyük harfe izin veriyor
 
Arkadaşlar textboxa sadece aşağıdaki karakterleri yazmak istersem kodu nasıl değiştirmek gerekir.

Büyük harfler (Türkçe karakterler dahil) , rakamlar ve ".:=-/" karakterler girilebilsin bunun dışındaki karakterleri nasıl kısıtlayabilirim.
 
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case Asc("0") To Asc("9")
Case Asc("A") To Asc("Z")
Case Asc(".")
Case Asc("-")
Case Asc(":")
Case Asc("/")
Case Asc("=")
Case Asc("-")
Case Else
KeyAscii = 0
End Select
End Sub

Eklemek istediğiniz diğer özel karekterleri siz ayarlarsınız.
 
Selamlar,

Aşağıdaki şekilde uyguladım fakat türkçe karakterlerde problem yaşıyorum.

İ - Ð - Þ karakterlerini tanımlamama rağmen kullanamıyorum.

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case Asc("0") To Asc("9")
Case Asc("A") To Asc("Z")
Case Asc("Ç")
Case Asc("Ð")
Case Asc("İ")
Case Asc("Ã?")
Case Asc("Þ")
Case Asc("Ü")
Case Asc(" ")
Case Asc(".")
Case Asc("-")
Case Asc(":")
Case Asc("/")
Case Asc("=")
Case Asc("-")
Case Else
KeyAscii = 0
End Select
End Sub
 
Arkadaşlar bu konudaki fikirlerinizi bekliyorum. :yardim:
 
SnCOST_CONTROL, aşağıdaki kodlar ile deneyin

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case Asc("0") To Asc("9")
Case Asc("A") To Asc("Z")
Case Asc(".")
Case Asc("-")
Case Asc(":")
Case Asc("/")
Case Asc("=")
Case Asc("-")
Case 199 'Ç'nin ascii kodu
Case 214 'Ã?'nün ascii kodu
Case 220 'Ü'nün ascii kodu
Case 304 'İ'nin ascii kodu
Case 350 'Þ'nin ascii kodu
Case 286 'Ð'nin ascii kodu
Case Else
KeyAscii = 0
End Select
End Sub
 
Sn. fructose teşekkür ederim. :arkadas:
 
Geri
Üst