• DİKKAT

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

İki tarih arasında gün farkı hesabı

Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
merhaba arkadaşlar

Korhan hocamın yaptığı bir çalışmadan yola çıkarak userform üzerinde iki ayrı textboxa girilen tarihleri arasındaki gün sayısını bulmaya çalıştım (Datedif fonksiyonu ile). Ancak benim istediğim gibi olmadı. Ben iki tarih arasındaki gün sayısı 1 yılı geçse bile sayı olarak versin istiyorum, iş günü ya da tatil olup olmaması önemli değil. Örnek vermek gerekirse;
Textbox1.Value= 01.01.2012
Textbox2.Value= 01.01.2013 olsun. Bu durumda olması gereken sonuç;
Textbox3.Value= 366 olacaktır. Ama bir türlü Datedif fonksiyonuyla bu sonucu alamadım.
Konuyla ilgili bilgisi olan varsa sevinirim.
 
merhaba arkadaşlar

Korhan hocamın yaptığı bir çalışmadan yola çıkarak userform üzerinde iki ayrı textboxa girilen tarihleri arasındaki gün sayısını bulmaya çalıştım (Datedif fonksiyonu ile). Ancak benim istediğim gibi olmadı. Ben iki tarih arasındaki gün sayısı 1 yılı geçse bile sayı olarak versin istiyorum, iş günü ya da tatil olup olmaması önemli değil. Örnek vermek gerekirse;
Textbox1.Value= 01.01.2012
Textbox2.Value= 01.01.2013 olsun. Bu durumda olması gereken sonuç;
Textbox3.Value= 366 olacaktır. Ama bir türlü Datedif fonksiyonuyla bu sonucu alamadım.
Konuyla ilgili bilgisi olan varsa sevinirim.

Şöyle denedinizmi?
Kod:
  TextBox3 = DateDiff("d", TextBox1, TextBox2)
 
Merhabalar

Kodu aşağıdaki gibi denedim.
Bugun = Sh1.Range("Z1").Value : '(20.01.2012 bugün tarihi)
Textbox2.Value:23.06.2012
ALAN15.Value=41082

Sonuç alıyorum ama istenilen şekilde değil, sayı formatıyla oynamak gerekiyor sanırım.

Format(ALAN16.Value, "#00") gibi yapmaya çalıştım ama olmadı. Yardımcı olursanız sevinirim.

Şöyle denedinizmi?
Kod:
  TextBox3 = DateDiff("d", TextBox1, TextBox2)

Dim Bugun As Date
Set Sh1 = Sheets("Kalibrasyon Listesi")
Bugun = Sh1.Range("Z1").Value
Rekalibrasyon = ALAN15.Value
ALAN15.Value = DateDiff("d", Bugun, ALAN11)
If ALAN15.Value < 0 Then
MsgBox "Kalibrasyon tarihi geçmiş ölçüm cihazı/mastar!", vbExclamation, "DİKKAT!"
Else
Rekalibrasyon = DateDiff("d", Bugun, ALAN11)
End If
End If
 
Kod:
Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox1.Value = Format(TextBox1.Value, "dd.mm.yyyy")
TextBox2.Value = Format(TextBox2.Value, "dd.mm.yyyy")

If TextBox1.Value = "" Then
MsgBox " Lütfen tarih giriniz..", , ""
End If

If TextBox2.Value = "" Then
MsgBox " Lütfen tarih giriniz..", , ""
End If

TextBox3.Value = CDate(TextBox2.Value) - CDate(TextBox1.Value)

End Sub


bir deneyin belki fikir verebilir..
 

Ekli dosyalar

Son düzenleme:
olmadı hocam.

senin gönderdiğin dosyada oluyor. Ama beim forma alınca tek gördüğüm 41082 diye bir sonuç, bunu nasıl senin sonucuna çevirebilirim acaba?

Kod:
Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox1.Value = Format(TextBox1.Value, "dd.mm.yyyy")
TextBox2.Value = Format(TextBox2.Value, "dd.mm.yyyy")

If TextBox1.Value = "" Then
MsgBox " Lütfen tarih giriniz..", , ""
End If

If TextBox2.Value = "" Then
MsgBox " Lütfen tarih giriniz..", , ""
End If

TextBox3.Value = CDate(TextBox2.Value) - CDate(TextBox1.Value)

End Sub
bir deneyin belki fikir verebilir..
 
Merhaba

Dosyayı ekledim, umarım bir yardımı olur. Tekrar teşekkür ederim ilginiz için.Dosya boyutu büyük olduğundan bazı sayfaları silmek zorunda kaldım.
 

Ekli dosyalar

Merhaba
Sh1.Range("Z1")' de bugünün tarihi yok. "01.01.1900" tarihi var.
Burada formül olmadığı gibi kodlarınızda buraya tarih atan bir bölüm göremedim
ALAN15.Value=41082 olması normal.
 
Bu ornek dosyalar bende calısmadı, debıg 13 mıssıng mıss match hatası verdı... Nasıl duzeltebılırım?
 
Senin mevcut kodun..

Kod:
Private Sub ALAN15_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error Resume Next
TextBox1.Value = Format(TextBox1.Value, "dd.mm.yyyy")
ALAN11.Value = Format(TextBox2.Value, "dd.mm.yyyy")

Dim ilk As Date, son As Date
ilk = DateValue("TextBox1.Value")
son = DateValue("ALAN11.Value")

If TextBox1.Value = "" Then
MsgBox " Lütfen tarih giriniz..", , ""
End If

If ALAN11.Value = "" Then
MsgBox " Lütfen tarih giriniz..", , ""
End If

ALAN15.Value = CDate(ALAN11.Value) - CDate(TextBox1.Value)
ALAN15.Value = Format(CDbl(ALAN15), "##,##0")
End Sub


kırmızı yeri düzelt...


Kod:
Private Sub ALAN15_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error Resume Next
TextBox1.Value = Format(TextBox1.Value, "dd.mm.yyyy")
ALAN11.Value = Format([COLOR="Red"]ALAN11.Value[/COLOR], "dd.mm.yyyy")

If TextBox1.Value = "" Then
MsgBox " Lütfen tarih giriniz..", , ""
End If

If ALAN11.Value = "" Then
MsgBox " Lütfen tarih giriniz..", , ""
End If

ALAN15.Value = CDate(ALAN11.Value) - CDate(TextBox1.Value)
[COLOR="YellowGreen"]ALAN15.Value = Format(CDbl(ALAN15), "##,##0")[/COLOR] ' bu kısımı userform_initailize  olayina ekle...
End Sub


ayrica calismani kontrol ederken kodlarin hata veriyor.. deneme şansım olmadı.. çok karmaşık çalışman olduğu icin.. yukarıda düzeltilen kodları dene.. yeşil renkte olanıda userform_initalize olayina ekle birde öyle dene.. gerçi o ALAN15 format şekli ama.. senin işine yarayan üstteki kodlar.. olması lazım.. saygılar..
 
Ellerine sağlık hocam, gayet güzel çalışıyor. Çok teşekkür ederim.
 
Geri
Üst