Soru İki Tarih Arasını Yüzde Olarak Verme

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Merhaba arkadaşlar
Misal
Formun initialize olayına
Textbox1de 01.01.2015 yazıyor ilk tarih
Textbox2de 01.01.2017 yazıyor son tarih

Textbox3 de yıl anlamında 3 yazıyor yani 3 yıl

Bu iki tarih aralığının textbox3 de yazan yılın yüzde % kaçını tamamladığını Label 1 de göstermesini istiyorum.

Kurallar

textbox1 boş ise başlangıç boş diye uyarı versin .
textbox2 boş ise hesaplarken gününün tarihini son tarih alarak yüzde hesabını yapıp (mevcut güne göre ) sonucu Label1 de göstersin istiyorum.

Aslında bir ilerleme çubuğu ile yüzde durumu görselleşse çok iyi olur ama yapamadım.
Yardım edebilecek olan varsa çok sevinirim.
 

Orion1

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

Ofis-2010-TR 32 Bit
Sonuç ne olacak.:cool:
 

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Sayın @Orion1 Hocam çok teşekkür ederim .

Misal Label1 de %75 olacak .

O zaman Hocam Label2 de olsa orda da yıl ay gün olsa imkanı olursa tabi
Misal
Label2 de. 2 yıl 5 ay 19 gün yazsa
 

Orion1

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

Ofis-2010-TR 32 Bit
Önce label1 i yapalım.
%75 i nasıl buldun?
 

Orion1

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

Ofis-2010-TR 32 Bit
Ben çıkıyorum.
iyi geceler.
 

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Hocam bir yılı 365 gun sayip
365×textbox3 de yazılı rakam olacak textbox3 de 3 yazıyor
Misal
Textbox3= 365×3=1095 gun
Textbox1-textbox2= ..... gün
01.01.2015 -01.12.2017=1065 gun
Label1=textbox2-textbox1×100/textbox3
Label1=1065×100/1095=%97,260

Textbox2 boş ise günün tarihini alacak
Textbox1 boş ise boş diye uyarı verecek
 
Son düzenleme:

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,032
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
İşlemi formun Initialize olayında istiyorsunuz. Bu nesnelere tarihler nasıl geliyor? Uyarılar hangi durumda gelecek?

Altın üyeliğiniz var. Konuyla ilgili basit bir örnek dosya ekleyip. Taleplerinizi örnek dosya üzerinden dile getirebilirsiniz. Böylece konu daha net anlaşılır.

Şimdilik aşağıdaki kodu deneyebilirsiniz.

C++:
Option Explicit

Private Sub UserForm_Initialize()
    TextBox1 = Format(DateSerial(2015, 1, 1), "dd.mm.yyyy")
    TextBox2 = Format(DateSerial(2017, 12, 1), "dd.mm.yyyy")
    TextBox3 = 3
    Label1.Caption = Format((CDate(TextBox2) - CDate(TextBox1)) / (TextBox3 * 365) * 100, "% 0.00")
End Sub
 

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
İşlemi formun Initialize olayında istiyorsunuz. Bu nesnelere tarihler nasıl geliyor? Uyarılar hangi durumda gelecek?

Altın üyeliğiniz var. Konuyla ilgili basit bir örnek dosya ekleyip. Taleplerinizi örnek dosya üzerinden dile getirebilirsiniz. Böylece konu daha net anlaşılır.

Şimdilik aşağıdaki kodu deneyebilirsiniz.

C++:
Option Explicit

Private Sub UserForm_Initialize()
    TextBox1 = Format(DateSerial(2015, 1, 1), "dd.mm.yyyy")
    TextBox2 = Format(DateSerial(2017, 12, 1), "dd.mm.yyyy")
    TextBox3 = 3
    Label1.Caption = Format((CDate(TextBox2) - CDate(TextBox1)) / (TextBox3 * 365) * 100, "% 0.00")
End Sub
Sayın @Korhan Ayhan Hocam
Daha önce excelde yaptığım dosyayı Hesaplama örneği diye aşağı yükledim.
Tarih farkı adlı dosyada olması gereken user form ile verilerin forma geliş şeklini kurguladım. Tarih farkı isimli dosyada işlem yapacağım.
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,032
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Kullandığınız TextBox22 nesnesinin End Sub satırından öncesine alttaki kod bloğunu ekleyip deneyiniz.

C++:
    If TextBox1 = "" Then
        MsgBox "Başlangıç boş!", vbCritical
    ElseIf TextBox2 = "" Then
        Label56.Caption = Format((CDate(Date) - CDate(TextBox1)) / (TextBox3 * 365) * 100, "% 0.00")
    Else
        Label56.Caption = Format((CDate(TextBox2) - CDate(TextBox1)) / (TextBox3 * 365) * 100, "% 0.00")
    End If
 

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Sayın @Korhan Ayhan Hocam
Textbox22 Change kısmında textbox22 ye 6 karekter sicil girmem gerkiyor.
Ama malesef her bir rakam girdiğimde textbox1 boş uyarısı veriyor ve işlevsiz oluyor

Sizin kodlariniz textbox22 ye 6 karekter girildikten sonra çalışsa olmaz mı

Bir de geçen sureyi
Yıl ay gün olarak gösterme şansımız var mı acaba
 

Ekli dosyalar

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,070
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Korhan Bey'in verdiği kod bloğundan önce aşağıdaki satırı ekleyip deneyin:

If Len(TextBox22) <> 6 Then Exit Sub
 

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Çok teskekur ederim Korhan Hocam Yusuf Hocam.
@Korhan Ayhan Hocam @YUSUF44 Hocamın dediği yol ile bu sorun çözüldü Label 57 de Geçen sureyi
Misal 1 yıl 4 ay 15 gün geçmiş şeklinde nasıl gösterebilirim.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,032
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Hangi tarihler arasındaki geçen süreyi istiyorsunuz diye sormak istemiştim.
 

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Textbox1 ile Textbox2 arasında gecen süre yi
2 yıl 5 ay 9 gün geçti şeklinde Hocam
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,032
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Deneyiniz.

C++:
Private Sub TextBox22_Change()
    TextBox22.BackColor = vbGreen
    If Len(TextBox22) = 6 Then
        TextBox23.SetFocus
        If Not IsNumeric(Replace(Replace(Replace(TextBox22.Text, "(", ""), ")", ""), " ", "")) Then
            TextBox22.SetFocus
            TextBox22.SelStart = 0
            TextBox22.SelLength = Len(TextBox22.Text)
        End If
    
        Dim bul
        On Error Resume Next
        bul = Sheets("VERİ").Range("B2:B100000").Find(What:=TextBox22, LookIn:=xlValues, lookat:=xlWhole).Row
        TextBox21.Value = Sheets("VERİ").Cells(bul, 1).Value
        TextBox23.Value = Sheets("VERİ").Cells(bul, 3).Value
        TextBox24.Value = Sheets("VERİ").Cells(bul, 4).Value
        TextBox1.Text = Sheets("VERİ").Cells(bul, 5).Value
        TextBox2.Text = Sheets("VERİ").Cells(bul, 6).Value
        TextBox3.Text = Sheets("VERİ").Cells(bul, 7).Value
    
        If TextBox1 = "" Then
            MsgBox "Başlangıç boş!", vbCritical
        ElseIf TextBox2 = "" Then
            Label56.Caption = Format((CDate(Date) - CDate(TextBox1)) / (TextBox3 * 365) * 100, "% 0.00")
            Yil = Evaluate("=DATEDIF(" & CLng(CDate(TextBox1)) & "," & CLng(CDate(Date)) & ",""y"")")
            Ay = Evaluate("=DATEDIF(" & CLng(CDate(TextBox1)) & "," & CLng(CDate(Date)) & ",""ym"")")
            Gun = Evaluate("=DATEDIF(" & CLng(CDate(TextBox1)) & "," & CLng(CDate(Date)) & ",""md"")")
            Label57.Caption = Yil & " Yıl " & Ay & " Ay " & Gun & " Gün"
        Else
            Label56.Caption = Format((CDate(TextBox2) - CDate(TextBox1)) / (TextBox3 * 365) * 100, "% 0.00")
            Yil = Evaluate("=DATEDIF(" & CLng(CDate(TextBox1)) & "," & CLng(CDate(Date)) & ",""y"")")
            Ay = Evaluate("=DATEDIF(" & CLng(CDate(TextBox1)) & "," & CLng(CDate(Date)) & ",""ym"")")
            Gun = Evaluate("=DATEDIF(" & CLng(CDate(TextBox1)) & "," & CLng(CDate(Date)) & ",""md"")")
            Label57.Caption = Yil & " Yıl " & Ay & " Ay " & Gun & " Gün"
        End If
    End If
End Sub
 

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Deneyiniz.

C++:
Private Sub TextBox22_Change()
    TextBox22.BackColor = vbGreen
    If Len(TextBox22) = 6 Then
        TextBox23.SetFocus
        If Not IsNumeric(Replace(Replace(Replace(TextBox22.Text, "(", ""), ")", ""), " ", "")) Then
            TextBox22.SetFocus
            TextBox22.SelStart = 0
            TextBox22.SelLength = Len(TextBox22.Text)
        End If
 
        Dim bul
        On Error Resume Next
        bul = Sheets("VERİ").Range("B2:B100000").Find(What:=TextBox22, LookIn:=xlValues, lookat:=xlWhole).Row
        TextBox21.Value = Sheets("VERİ").Cells(bul, 1).Value
        TextBox23.Value = Sheets("VERİ").Cells(bul, 3).Value
        TextBox24.Value = Sheets("VERİ").Cells(bul, 4).Value
        TextBox1.Text = Sheets("VERİ").Cells(bul, 5).Value
        TextBox2.Text = Sheets("VERİ").Cells(bul, 6).Value
        TextBox3.Text = Sheets("VERİ").Cells(bul, 7).Value
 
        If TextBox1 = "" Then
            MsgBox "Başlangıç boş!", vbCritical
        ElseIf TextBox2 = "" Then
            Label56.Caption = Format((CDate(Date) - CDate(TextBox1)) / (TextBox3 * 365) * 100, "% 0.00")
            Yil = Evaluate("=DATEDIF(" & CLng(CDate(TextBox1)) & "," & CLng(CDate(Date)) & ",""y"")")
            Ay = Evaluate("=DATEDIF(" & CLng(CDate(TextBox1)) & "," & CLng(CDate(Date)) & ",""ym"")")
            Gun = Evaluate("=DATEDIF(" & CLng(CDate(TextBox1)) & "," & CLng(CDate(Date)) & ",""md"")")
            Label57.Caption = Yil & " Yıl " & Ay & " Ay " & Gun & " Gün"
        Else
            Label56.Caption = Format((CDate(TextBox2) - CDate(TextBox1)) / (TextBox3 * 365) * 100, "% 0.00")
            Yil = Evaluate("=DATEDIF(" & CLng(CDate(TextBox1)) & "," & CLng(CDate(Date)) & ",""y"")")
            Ay = Evaluate("=DATEDIF(" & CLng(CDate(TextBox1)) & "," & CLng(CDate(Date)) & ",""ym"")")
            Gun = Evaluate("=DATEDIF(" & CLng(CDate(TextBox1)) & "," & CLng(CDate(Date)) & ",""md"")")
            Label57.Caption = Yil & " Yıl " & Ay & " Ay " & Gun & " Gün"
        End If
    End If
End Sub
Hocam geçen zaman label57 hatalı geliyor
Yüzde oranı yüzde 100 iken
Geçen zaman 2 yıl 1 ay 9 gün yazıyor ama 3 yıl 0 ay 0 gün yazmali

Hocam bir de textbox22 yi temizleyince tüm textboxlar ve labeller temizlenirken şimdi ise textbox22 yi silince herşey dolu kalıyor
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,032
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Yazdığınızdan bir şey anlamadım.

Eklediğim resimdeki son sütundaki yıl-ay-gün bilgileri doğru mu? (Resmi güncelledim. Tekrar kontrol ediniz.)
 
Üst