12/03/2020, 12:22
12/03/2020, 12:25
Hacı abi benim ki hata vermez çünkü 10 karakter sorgulaması var.
Yani 10 karakterden az olursa hata mesaj çıkar.Bir daha deneyin ve hangi kodu denediyseniz yazınız buraya.
Alttaki kod zaten 10 karakter kontrol ediyor.
Berduş hocamız sayedindeki diğer koduda sildik if len(Tarih(0))< gibi olanı gerçi hata vermez.
If Not deger Like "##.##.####" Then
Yani 10 karakterden az olursa hata mesaj çıkar.Bir daha deneyin ve hangi kodu denediyseniz yazınız buraya.
Alttaki kod zaten 10 karakter kontrol ediyor.
Berduş hocamız sayedindeki diğer koduda sildik if len(Tarih(0))< gibi olanı gerçi hata vermez.
If Not deger Like "##.##.####" Then
12/03/2020, 12:27
Function isTarih() As Boolean
On Error GoTo Err_hata
Dim result As Boolean
Dim str As String
str = Day(CLng(DateSerial(Year("39.12.20"), Month("39.12.20") + 1, 1) - 1))
result = True
Exit_kod:
isTarih = result
Exit Function
Err_hata:
result = False
MsgBox Err.Description
Resume Exit_kod
End Function
12/03/2020, 12:29
(12/03/2020, 12:27)accessman yazdı: [ -> ]Diyecek bir kelime bulamıyorum size.Function isTarih() As Boolean
On Error GoTo Err_hata
Dim result As Boolean
Dim str As String
str = Day(CLng(DateSerial(Year("39.12.20"), Month("39.12.20") + 1, 1) - 1))
result = True
Exit_kod:
isTarih = result
Exit Function
Err_hata:
result = False
MsgBox Err.Description
Resume Exit_kod
End Function
12/03/2020, 12:41
en son onu yazınca olur diye düşünmüştüm kusura bakmayın sizin kodu fonksiyon haline getirsek fonksiyona metin kutusu gönderip boolean sonuç alsak nasıl düzenlemek lazım
Private Function isTarih(metin0 As TextBox) As Boolean
On Error GoTo son
With metin0
If .Value = "" Then GoTo enson
Dim tarih As Variant, trh As Date, eom As Long, deger As String
.Value = Replace(.Value, " ", ".")
.Value = Replace(.Value, "/", ".")
tarih = Split(.Value, ".")
If Len(tarih(0)) = 1 Then tarih(0) = "0" & tarih(0)
If Len(tarih(1)) = 1 Then tarih(1) = "0" & tarih(1)
deger = tarih(0) & "." & tarih(1) & "." & tarih(2)
If Not deger Like "##.##.####" Then
MsgBox "Tarih bilgisi ""gg.aa.yyyy"" şeklinde girilmelidir.", vbCritical, "HATA"
.SetFocus
GoTo var
Else
trh = DateSerial(tarih(2), tarih(1), 1)
eom = Day(CLng(DateSerial(Year(trh), Month(trh) + 1, 1) - 1))
If Val(tarih(0)) > eom Then
GoTo son
.SetFocus
End If
If tarih(1) > 12 Then
GoTo son
.SetFocus
End If
End If
MsgBox "Tarih Format Dogru...", vbInformation, "Bilgi"
var:
eom = Empty
trh = Empty
deger = Empty
Erase tarih
Exit Function
son:
.SetFocus
MsgBox "Hatali Tarih...", vbCritical, "Hata"
Cancel = True
Exit Function
enson:
End With
End Function
12/03/2020, 12:46
Eğer yazacağım kodu kullanacaksanız uğraşayım yoksa boşuna vakit harcamayayım.