• DİKKAT

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

Çok fazla TextBox a rakam girmeyi zorlama

Katılım
13 Haziran 2009
Mesajlar
486
Excel Vers. ve Dili
excel 2007 tr
Selamlar.
Private Sub TextBox1_Change()
Say = Len(TextBox1) - Len(Replace(TextBox1, ",", ""))
If Say > 1 Then SendKeys "{BS}"
If Left(TextBox1, 1) = "," Then TextBox1 = "0,"
End Sub

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case Asc("0") To Asc("9")
Case Asc(",")
Case Else
KeyAscii = 0: MsgBox "Sadece rakam girebilirsiniz.", vbExclamation, "Dikkat !"
End Select
End Sub

Bu kod hocalarımızın çalışmalrından aldığımız sadece rakam girmeye zorlayan bir form,Benim bir formumda 30 a yakın textbox var,hepsine ayrı ayrı yazmanın imkanı olmadığına göre,birleştirme nasıl olacak...
Veya bir çalışma kitabına ait 10 dan fazla UserForm da bu nasıl kullanılabilir.
 
Bu istediğiniz classmodule ile olur.:cool:
Bir classModule oluşturunuz.Adı classmodule1 olacak.
Ve içine aşağıdaki kodları yapıştırınız.
Kod:
Public WithEvents txt As MSForms.TextBox
Private Sub txt_Change()
If Not IsNumeric(txt.Value) Then
    MsgBox "Lütfen Sayısal Bir değer giriniz!"
    txt.SetFocus
    txt.SelStart = 0
    txt.SelLength = Len(txt.Value)
End If
End Sub

Ben 4 tane textbox olduğunu kabul ettim.Siz kaç taneyse 4 yazan yerlere o sayıyı giriniz.
Aşağıdaki kodu userformun declare(General) kısmına yazınız.
Kod:
Dim txt(4) As New Class1
aşağıdaki kodlardada 4 yazan yere textboxınız kaç tane ise o sayıyı yazın.
Aşağıdaki kodlar userformun initialize olayındadır.:
Kod:
Private Sub UserForm_Initialize()
Dim i As Byte
For i = 1 To 4
    Set txt(i).txt = Controls("TextBox" & i)
Next i
End Sub
Ekteki örnek dosyayı inceleyiniz.:cool:
 

Ekli dosyalar

Selamlar,

Alternatif olarak yine Class Module ile hazırladığım örnek dosyayı incelermisiniz.

TextBox neslerine sadece sayısal veri girmeye zorlar.
En son TextBox nesnesinde toplama işlemi yapar.
 

Ekli dosyalar

Bu istediğiniz classmodule ile olur.:cool:
Bir classModule oluşturunuz.Adı classmodule1 olacak.
Ve içine aşağıdaki kodları yapıştırınız.
Kod:
Public WithEvents txt As MSForms.TextBox
Private Sub txt_Change()
If Not IsNumeric(txt.Value) Then
    MsgBox "Lütfen Sayısal Bir değer giriniz!"
    txt.SetFocus
    txt.SelStart = 0
    txt.SelLength = Len(txt.Value)
End If
End Sub

Ben 4 tane textbox olduğunu kabul ettim.Siz kaç taneyse 4 yazan yerlere o sayıyı giriniz.
Aşağıdaki kodu userformun declare(General) kısmına yazınız.
Kod:
Dim txt(4) As New Class1
aşağıdaki kodlardada 4 yazan yere textboxınız kaç tane ise o sayıyı yazın.
Aşağıdaki kodlar userformun initialize olayındadır.:
Kod:
Private Sub UserForm_Initialize()
Dim i As Byte
For i = 1 To 4
    Set txt(i).txt = Controls("TextBox" & i)
Next i
End Sub
Ekteki örnek dosyayı inceleyiniz.:cool:

Sevgili Hocam,
Farz-ı misal TextBox3 metin özelliğinde olursa,onu ayırmamız gerekecek galiba.
Ki benim karışık çalışmamda öyle.çözümlümüdür.
 
Selamlar,

Alternatif olarak yine Class Module ile hazırladığım örnek dosyayı incelermisiniz.

TextBox neslerine sadece sayısal veri girmeye zorlar.
En son TextBox nesnesinde toplama işlemi yapar.


Hocam Selamlar,
ClassModül le ilgili bu çalışma kod arşivimde var,ama ne işe yarar,ne zaman kullanırım diye düşünmüştüm. -ki aslında sayısısal veri girilen textboxları topluyor diye düşünüyordum).Okuduğum makalelerde de galiba anlam karmaşasından olacak bişi de anlamamışım,-ders anlatılırken de o günkü derste olmadığımdan - :) ancak bir soru neticesinde ortaya çıktı.
Mevzuyu anladık,akşam evde uygulayacağım,
Size ve Evren Hocam'a da Teşekkürler.
 
Sevgili Hocam,
Farz-ı misal TextBox3 metin özelliğinde olursa,onu ayırmamız gerekecek galiba.
Ki benim karışık çalışmamda öyle.çözümlümüdür.
O zaman userformun initialze olayındaki kdoalrı aşağıdakiler ile değiştiriniz.:cool:
Kod:
Private Sub UserForm_Initialize()
Dim i As Byte
For i = 1 To 4
    If i <> 3 Then Set txt(i).txt = Controls("TextBox" & i)
Next i
End Sub
 
Teşekkürler Hocam,
Emeğinize sağlık,işlem tamam oldu,ve de
Sizler iyiki varsınız.
Sevgilerimle.
 
yardım

arkadaşlar yeni konu açmak istiyorum ama bulamadım bir türlü, buraya yazmak zorunda kaldım. lütfen yardım edin, bi sorum var ve bunun için konu açmam lazım.
 
Kod:
Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)

TextBox3 = Format(TextBox3, "###,###,###")
    
    If Not IsNumeric(TextBox3.Value) Then
        MsgBox "Lütfen Sayısal Bir Değer Giriniz!"
        TextBox3.SetFocus
        TextBox3.SelStart = 0
        TextBox3.SelLength = Len(TextBox3.Value)
    End If
    
End Sub

Yukarıdaki kodda uyarı veriyor ve tamama tıklıyorum ancak veriyi değiştirmemde ısrar etmiyor. Yani TextBox'a a yazıyorum. Lütfen Sayısal Bir Değer Giriniz! diyor tamama tıklıyorum ve değiştirmesem de bir sonraki TextBox'a geçiyor sizce kodu nasıl düzenlemeliyim.
 
Geri
Üst