Ç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.
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,248
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
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

Korhan Ayhan

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

Katılım
13 Haziran 2009
Mesajlar
486
Excel Vers. ve Dili
excel 2007 tr
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.
 
Katılım
13 Haziran 2009
Mesajlar
486
Excel Vers. ve Dili
excel 2007 tr
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.
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,248
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
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
 
Katılım
13 Haziran 2009
Mesajlar
486
Excel Vers. ve Dili
excel 2007 tr
Teşekkürler Hocam,
Emeğinize sağlık,işlem tamam oldu,ve de
Sizler iyiki varsınız.
Sevgilerimle.
 
Katılım
22 Kasım 2009
Mesajlar
17
Excel Vers. ve Dili
excell 2007
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.
 
Katılım
4 Haziran 2009
Mesajlar
16
Excel Vers. ve Dili
Microsoft Office Professional Plus 2010 - Türkçe
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.
 
Üst