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
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
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
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,634
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Class Module konusunu araştırın.
 
Katılım
25 Şubat 2010
Mesajlar
5
Excel Vers. ve Dili
access
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.
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,634
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
class module'da istenen textbox'lar ayarlanabilir.
 
Katılım
25 Şubat 2010
Mesajlar
5
Excel Vers. ve Dili
access
size zahmet vermiş olmayayım ama örnek verebilirseniz üzerinde çalışma imkanım olabilir şimdiden teşekkürler
 
Katılım
25 Şubat 2010
Mesajlar
5
Excel Vers. ve Dili
access
İ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
 
Üst