Textboxa sadece rakam veya sadece harf girebilmek

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
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
 

Ali

Uzman
Katılım
21 Temmuz 2005
Mesajlar
7,897
Excel Vers. ve Dili
İş:Excel 2016-Türkçe
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
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
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.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
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
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
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]
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
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.
 

Ali

Uzman
Katılım
21 Temmuz 2005
Mesajlar
7,897
Excel Vers. ve Dili
İş:Excel 2016-Türkçe
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
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
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.
 

Ali

Uzman
Katılım
21 Temmuz 2005
Mesajlar
7,897
Excel Vers. ve Dili
İş:Excel 2016-Türkçe
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.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
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
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Arkadaşlar bu konudaki fikirlerinizi bekliyorum. :yardim:
 

Ali

Uzman
Katılım
21 Temmuz 2005
Mesajlar
7,897
Excel Vers. ve Dili
İş:Excel 2016-Türkçe
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
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Sn. fructose teşekkür ederim. :arkadas:
 
Üst