• DİKKAT

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

Birden fazla textbox'a tarih formatı.

Katılım
25 Şubat 2010
Mesajlar
5
Excel Vers. ve Dili
access
Userform üzerinde bulunan birden fazla textbox'a (örneğin sıralı 15 adet) tarih formatında giriş yapılması bunun dışındaki girişlere izin vermemesini istiyorum. Virgülü noktaya çevirme ve sadece sayı girilmesi için aşağıdaki kodu her bir textbox için ayrı ayrı kullandım sorun çözüldü. Ama hem tarih formatı hem de bunun daha kısa bir kod ile çözümü var mıdır acaba merak ediyorum. Yardımlarınız için şimdiden teşekkür ederim.

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 44
KeyAscii = 46
Case 46, 48 To 57
Case Else
KeyAscii = 0
End Select
End Sub
 
Merhaba.
Bütün textboxların Exit ve KeyPress olaylarını aşağıdaki gibi yapmalısınız.
Kod:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Cancel = Tarih(TextBox1)
End Sub

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    KeyAscii = Key(KeyAscii)
End Sub

Aşağıdaki kodları da formun kod bölümüne kopyalayın.
Kod:
Function Tarih(txt As Control) As Boolean
    If Not IsDate(txt.Text) Then
        txt.SelStart = 0
        txt.SelLength = Len(txt.Text)
        Tarih = True
        MsgBox "Bu alana sadece tarih girebilirsiniz."
    End If
End Function

Function Key(Key_Ascii As MSForms.ReturnInteger) As Byte
    Select Case Key_Ascii
    Case 44
        Key = 46
    Case 46, 48 To 57
        Key = Key_Ascii
    Case Else
        Key = 0
    End Select
End Function
 
Class Module konusunu araştırın.
 
Class Module biraz baktım orada tüm textboxlar için yapılıyor sanki benim istediğim ise belli aralıktaki (Örn:1-15 veya 21-36) sayı aralığındaki textboxlara uygulama yapılması. yani 1-15 aralığındaki textboxlara sadece tarih girilebilsin. 21- 35 arasındakine sadece saat girilebilsin gibi.
 
class module'da istenen textbox'lar ayarlanabilir.
 
size zahmet vermiş olmayayım ama örnek verebilirseniz üzerinde çalışma imkanım olabilir şimdiden teşekkürler
 
İstenilen textboxlara sadece sayı girilmesi ve virgülün noktaya çevrilmesi olayını şu şekilde çözdüm.

sayı adında class module oluşturup şu kodları ;

Public WithEvents TextGroup As MSForms.TextBox Private Sub TextGroup_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Select Case KeyAscii Case 44 KeyAscii = 46 Case 44, 48 To 57 Case Else KeyAscii = 0 End Select End Sub


Userform initialize kısmına da şu kodları yazdım.

Dim textboxes() As New sayı Private Sub UserForm_Initialize() ReDim Preserve textboxes(15) For a = 1 To 15 Set textboxes(a).TextGroup = Controls("TextBox" & a) Next End Sub
 
Geri
Üst