• DİKKAT

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

Aynı Anda Seçtiğim Textboxlara Aynı Kodu Uygulama

Katılım
15 Nisan 2008
Mesajlar
303
Excel Vers. ve Dili
2010
Arkadaşlar seçtiğim textboxlara sadece sayısal değer girilmesini istiyorum yalnız tek tek hepsine girip keypresse kod yazmam gerekiyor, bunu nasıl tek seferde halledebilirim, çünkü bu şekilde yapmak istediğim textbox sayısı çok fazla, yardımcı olursanız sevinirim, Saygılar.
 
Normal sayfadaki mi, UserForm'daki textboxlara mı?
 
TextBox ları önce bu şekilde tanımlama yapın.
Kod:
Private Sub TextBox1_Change() 

    SAYI

End Sub 

 

Private Sub TextBox2_Change() 

    SAYI
End Sub 

 

Private Sub TextBox3_Change() 

    SAYI

End Sub

Sonra UserForm içine bu kodu ekleyin


Kod:
Private Sub SAYI()



    If TypeName(Me.ActiveControl) = "TextBox" Then

        With Me.ActiveControl

            If Not IsNumeric(.Value) And .Value <> vbNullString Then

                MsgBox "SAYI GİRİNİZ"

                .Value = vbNullString

            End If

        End With

    End If

    

End Sub
 
Sayın Turist, 500 textboxa sayı verisini girmek kod girmekle eşdeğer, bunun daha kolay yolu yokmu class module kullanarak çözemeyizmi. saygılar.
 
ClassModul'e:
Kod:
Option Explicit 
 
Private WithEvents tbx1 As MSForms.TextBox 
 
Sub SetTextbox(ByVal tbx As MSForms.TextBox) 
    Set tbx1 = tbx 
End Sub 
 
 
Private Sub tbx1_Change() 
    With tbx1 
        If Not IsNumeric(.Value) And .Value <> vbNullString Then 
            MsgBox "SAYI GİRİNİZ" 
            .Value = vbNullString 
        End If 
    End With 
End Sub

UserForm koduna:
Kod:
Option Explicit 
 
Dim cTextBox() As cTextboxes 
 
Private Sub UserForm_Initialize() 
    Dim obj As MSForms.Control, i As Long 
     
    For Each obj In Me.Controls 
        If TypeName(obj) = "TextBox" Then 
            i = i + 1 
            Redim Preserve cTextBox(i) 
            Set cTextBox(i) = New cTextboxes 
            cTextBox(i).SetTextbox obj 
            obj.Tag = i 
        End If 
    Next 
End Sub

şeklinde deneyin.(Kodlar yabancı kaynak'dan alıntıdır)
 
Evren hocamızın kodunda Dim i As Byte kısmını Dim i As Long yaparak sorunu çözdüm teşekkürler. saygılar. Sayın turist, sizin kodlarda kullanışlı yalnız bu kodlar ardışık textboxlarda kullanılır, 3,4,12,18 şeklinde karışık uygulayabilirmiyiz.
 
Geri
Üst