• DİKKAT

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

Hatalı girilen tarih için uyarı verilebilirmi?

Katılım
27 Aralık 2006
Mesajlar
254
Excel Vers. ve Dili
Excel Visual Basic 6.0
Sayın üstadlar ve arkadaşlar; Ekli dosya içerisinde tarih girilen TextBox lar var. Bu kısımlara tarih girerken hatalı yada eksik girildiğinde bir uyarı vermesi gibi bir işlem yapılabilirmi? Örneğin; 15.03.207 diye bir giriş yapılıp yada 32.13.2007 gibi girişden sonra bir sonraki kutuya geçerken bir uyarı ile tarih hatalı gibi bir uyarı verebilme ihtimali varmı?
 
Aşağıdaki kodu kendi kodlarınıza uyarlayınız.:cool:

Kod:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsDate(TextBox1.Value) Then
    MsgBox "Yanlış giriş.Geçerli bir tarih giriniz.", vbCritical
    Cancel = True
End If
End Sub
 
Sorunun bir kısmı çözüldü, teşekkür ederim. Diğer olasılık için

Aşağıdaki kodu kendi kodlarınıza uyarlayınız.:cool:

Kod:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsDate(TextBox1.Value) Then
    MsgBox "Yanlış giriş.Geçerli bir tarih giriniz.", vbCritical
    Cancel = True
End If
End Sub

Sayın üstad; sorunun bir kısmı çözülmüş oldu teşekkür ederim. Tarih deki eksik girişde uyarıyı veriyor, yanlız tarih kısmına örneğin; 01.13.2007 gibi olmayan bir tarih girildiğinde 13. ay olmayacağı için yada 32. gün gibi, bu gibi hatalı girişlerde uyarı vermeden diğer kısıma geçiyor. Bunu nasıl önleyebiliriz. İlgilerinize şimdiden teşekkür ederim. Saygılarımla.
 
01.13.2007'yi aslında tarih olarak algılıyor.
01.13.2007'yi 13.01.2007 olarak algılıyor.
Aşağıdaki kodu kullanarak bunu anlayabilirsiniz.:cool:
Kod:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox1.Value = Format(TextBox1.Value, "dd.mm.yyyy")
If Not IsDate(TextBox1.Value) Then
    MsgBox "Yanlış giriş.Geçerli bir tarih giriniz.", vbCritical
    Cancel = True
End If
End Sub
 
Hata veriyor

01.13.2007'yi aslında tarih olarak algılıyor.
01.13.2007'yi 13.01.2007 olarak algılıyor.
Aşağıdaki kodu kullanarak bunu anlayabilirsiniz.:cool:
Kod:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox1.Value = Format(TextBox1.Value, "dd.mm.yyyy")
If Not IsDate(TextBox1.Value) Then
    MsgBox "Yanlış giriş.Geçerli bir tarih giriniz.", vbCritical
    Cancel = True
End If
End Sub

Sayın üstad; başınızı çok ağırtıyorum, kusura bakmayın. Yazmış olduğunuz kodu ekledim ve denedim. Fakat hata veriyor ( Overflow ) hatası. Bu neden kaynaklanır. Örneğin; diyelim ki kullanıcı yanlışlıkla 32.03.2007 yazdı ve geçmeye çalıştı, bu durumda Msg kutusundaki uyarıyı vermesi gerekir.
 
Son düzenleme:
Ekli dosyayı inceleyiniz.:cool:
Kod:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error Resume Next
TextBox1.Value = Format(TextBox1.Value, "dd.mm.yyyy")
If Not IsDate(TextBox1.Value) Then
    MsgBox "Yanlış giriş.Geçerli bir tarih giriniz.", vbCritical
    Cancel = True
End If
End Sub
 
açıklama

Ekli dosyayı inceleyiniz.:cool:
Kod:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error Resume Next
TextBox1.Value = Format(TextBox1.Value, "dd.mm.yyyy")
If Not IsDate(TextBox1.Value) Then
    MsgBox "Yanlış giriş.Geçerli bir tarih giriniz.", vbCritical
    Cancel = True
End If
End Sub

Yanılmıyorsam sorun şuradan kaynaklanıyor üstad; Ben Tarih TextBox'ını tanımlarken " TextBox4 = Format(TextBox4, "00"".""00"".""0000") " örnekte olduğu gibi tanımladım. Ama sizin göndermiş olduğunuz örnekte TextBox kutusunun özel tanımlaması yok. Yani girişler gün yazdıktan sonra ( / ) ay yazdıktan sonra ( / ) işareti koymak gerekiyor. Benim yapmak istediğim olay ( / ) kullanmadan, yazarken "00.00.0000" formatının çıkması ve rakkamların ( / ) koymadan yazdıkça yerlerine geçmesini amaçlamıştım. Bu konu üzerinde çalışma yapılabilirmi. Eğer daha öncek ekli dosyayı kontrol ederseniz anlatmak istediğim olayı çözebilirsiniz.Saygılarımla.
 
Son düzenleme:
Hatırlatma

Sayın üstad bu konuda bir yorumunuz olacakmı?
 
Selamlar,

Alternatif olarak ekteki örnek dosyayı incelermisiniz. TextBox kontrolüne tarihi "gg.aa.yyyy" formatında girin.

Örneğin;

TextBox kontrolüne sayısal olmayan bir değer girmeye çalışırsanız uyarı mesajı çıkacaktır.

Gün için "24" yazdığınızda format otomatik olarak "24." olacaktır. Devamında ay için "08" yazdığınızda format otomatik olarak "24.08." olacaktır.

Eğer gün için "31" den büyük bir değer girerseniz uyarı mesajı çıkacaktır. Aynı şekilde ay için "12" den büyük bir değer girerseniz yine uyarı mesajı çıkacaktır.

Umarım faydası olur.
 
Geri
Üst