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
Altın Üyelik Bitiş Tarihi
09.07.2019
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ı?
 

Orion1

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

Ofis-2010-TR 32 Bit
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
 
Katılım
27 Aralık 2006
Mesajlar
254
Excel Vers. ve Dili
Excel Visual Basic 6.0
Altın Üyelik Bitiş Tarihi
09.07.2019
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.
 

Orion1

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

Ofis-2010-TR 32 Bit
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
 
Katılım
27 Aralık 2006
Mesajlar
254
Excel Vers. ve Dili
Excel Visual Basic 6.0
Altın Üyelik Bitiş Tarihi
09.07.2019
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:

Orion1

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

Ofis-2010-TR 32 Bit
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
 
Katılım
27 Aralık 2006
Mesajlar
254
Excel Vers. ve Dili
Excel Visual Basic 6.0
Altın Üyelik Bitiş Tarihi
09.07.2019
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:
Katılım
27 Aralık 2006
Mesajlar
254
Excel Vers. ve Dili
Excel Visual Basic 6.0
Altın Üyelik Bitiş Tarihi
09.07.2019
Hatırlatma

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

Korhan Ayhan

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