Tarih Doğrulama hakkında

Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Bir adet checkbox, bir adet textbox, bir adet command butonomuz var diyelim.

cehbox seçili ise
-Textbox1 içi boşmu kontrol edecek ve hata kodu verecek. (bu tamam)
-Dolu ise içeriği tarih mi onu kontrol edecek (Sorun burada)
kontrolü yapıyor ancak textboxa girilen değeri genellikle geçerli tarih gibi görüyor;
32/1/1 girince tarih değeri 01.01.1932 oluyor,
33/5/8 girince tarih değeri 08.05.1933 oluyor,
bunlar bana göre hatalıdır,
araya gg.aa.yyyy formatında yazılıpğ yazılmadığını kontrol ettirmek mümkün mü?

Kod:
Private Sub CommandButton1_Click()

On Error GoTo goHatalar
Dim strCTRLAD As String
Dim varDEGER  As Variant
  If Me.chkPers_EHLIYETDURUM = True Then
      With Me.txtPers_EHLVERTARIHI
        strCTRLAD = .Name
        varDEGER = .Text
        If .Text = "" Then Err.Raise 7906
        If IsDate(.Text) = False Then
          varDEGER = .Text
          Err.Raise 7906
        Else
          Tarih = CDate(.Text)
        End If
      End With
  End If
  GoTo goISLEM_SONU

'=================================
goISLEM_SONU:
  Exit Sub

goHatalar:
  Call subDEGER_HATALARI(Err, CStr(strCTRLAD), varDEGER)
  GoTo goISLEM_SONU
  Exit Sub

End Sub
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Aşağıdaki gibi bir ifadeyle formatı kontrol edebilirsiniz.

Kod:
deg = Split(TextBox1, "/")
MsgBox deg(0) > 31 Or deg(1) > 12
Regexp ile kontrol etmek istersek aşağıdaki gibi bir mantıkta kullanılabilir.

Kod:
Set deg = CreateObject("VBScript.Regexp")
With deg
    .Pattern = "^([1-9]{1}|[1-2]{1}[0-9]{1}|3[0-1]{1})/([1-9]{1}|1[0-2]{1})/([0-9]{1,4})"
    .Global = True
  If .TEST(TextBox1) = False Then
    MsgBox "Tarih yazımı hatalıdır"
    Set deg = Nothing
    TextBox1.SetFocus
    Exit Sub
  End If
End With
Set deg = Nothing
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Levent hocam RegExp aklıma geldi ama ben tarihleri genelde
1/1/1 _________ 01/01/2001
15/12/2_______ 15/02/2002
4/9/79_________04/09/1979
29/5/453 _______ 29/05/1453

gibi girerim.

format yöntemindeki dedinizi yapınca 32/1/1 girince tarih değeri 01.01.1932 oluyor,
33/5/8 girince tarih değeri 08.05.1933 oluyor. sorun da bu.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Yukarıda verdiğim ilk önerimdeki mantık ile ikinci önerimdeki deseni değiştirdim birde böyle deneyin.
 
Üst