• DİKKAT

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

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

Deneyiniz.

Ben bu kodlar ile resimdeki sonuçları alıyorum.

C++:
Private Sub TextBox22_Change()
    Dim Nesne As Control
    TextBox22.BackColor = vbGreen
    If TextBox22 = "" Then
        TextBox21 = ""
        TextBox23 = ""
        TextBox24 = ""
        TextBox1 = ""
        TextBox2 = ""
        TextBox3 = ""
        Label56.Caption = ""
        Label57.Caption = ""
    End If
    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(TextBox2)) & ",""y"")")
            Ay = Evaluate("=DATEDIF(" & CLng(CDate(TextBox1)) & "," & CLng(CDate(TextBox2)) & ",""ym"")")
            Gun = Evaluate("=DATEDIF(" & CLng(CDate(TextBox1)) & "," & CLng(CDate(TextBox2)) & ",""md"")")
            Label57.Caption = Yil & " Yıl " & Ay & " Ay " & Gun & " Gün"
        End If
    End If
End Sub
 
Deneyiniz.

Ben bu kodlar ile resimdeki sonuçları alıyorum.

C++:
Private Sub TextBox22_Change()
    Dim Nesne As Control
    TextBox22.BackColor = vbGreen
    If TextBox22 = "" Then
        TextBox21 = ""
        TextBox23 = ""
        TextBox24 = ""
        TextBox1 = ""
        TextBox2 = ""
        TextBox3 = ""
        Label56.Caption = ""
        Label57.Caption = ""
    End If
    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 7 numaralı kayıt 3 yıl 0 ay 0 gün olursa tam doğru oluyor mal3sef resimde 7 numaralı kayıt yüzde yüz iken geçen zmaan 2 yıl 1 ay 9 gün oluyor
 

Ekli dosyalar

  • Tarih Farkı.xlsm
    Tarih Farkı.xlsm
    23.3 KB · Görüntüleme: 7
  • Adsız.jpg
    Adsız.jpg
    120.9 KB · Görüntüleme: 5
O sonuca nasıl ulaşıyorsunuz? (7 numaralı kayıt için)

Ayrıca bir önce paylaştığınız dosyada 7 numaralı kayıt yoktu. Sonradan eklemişsiniz sanırım.
 
Evet 7 numaralı kayıdı yeni ekledim.
08.08.2018 yılı ile 07.08.2021 yılı tam 3 yıl ediyor yani yüzde yüz. O zaman 3 yıl 0 ay 0 gün yazması gerekmez mi
 
Excelin hesapladığı sonuç bu şekilde. Demek ki tam 3 yıl yapmıyor. (Artık gün olabilir.)
 
Hocam ama yüzde yüz gösteriyor. 3 yıl olarak.
Orda bir problem yokken yil ay gün olarak hesapalrken tüm kayıtlar hatalı oluyor ama
 
F8 hücresindei tarihi 08.08.2021 olarak düzeltirseniz aşağıdaki sonuç çıkacaktır.

3 Yıl 0 Ay 0 Gün

#22 nolu mesajımda ki kodu revize ettim. Tekrar deneyiniz.
 
Sayın @Korhan Ayhan Hocam

Labellere süreler %100 %40 %56 gibi geliyor hiç bir sorun yok
Ben Label 64de Label64= Label56 + Label60 + Label62 şeklinde toplam almak istiyorum.
Eğer label 56. 60. 62 den boş olan varsa onu 0 kabul ederek toplama yapacak .
Ama basında % ibaresi olduğundan boş labeller label62 diye geliyor ve toplama yapmıyor.
Yani Label64 de %100 Label56 %54 gibi geliyor
Kodu nasıl yazacağım konusunda yardım edebilir misiniz

Alıntı
 
Size tavsiyem proje uygulamalarına girişmeden önce en azından basit IF-END IF sorgularını öğrenmeniz olacaktır. Yoksa çok bocalarsınız.

Bunlarla ilgili olarak hem forumda hem de nette bolca örnekler var. Araştırma yapıp bilgilerinizi genişletmeniz gerekiyor.

Bahsettiğiniz (LABEL) nesneler genellikle metinsel verileri depolamak amacıyla kullanılır. Bu sebeple matematiksel işlemlerde sıkıntı yaşamanız normaldir.

Ama tabi ki bu durum aşılamaz değildr.

Aşağıdaki gibi bir kurgu işinize yarayabilir. Kendi nesnelerinize uyarlarsınız.

C++:
Private Sub CommandButton1_Click()
    If Label1.Caption = "" Then Label1.Caption = 0
    If Label2.Caption = "" Then Label2.Caption = 0
    If Label3.Caption = "" Then Label3.Caption = 0
    Label4.Caption = Format(CDbl(Replace(Label1.Caption, "%", "")) + CDbl(Replace(Label2.Caption, "%", "")) + CDbl(Replace(Label3.Caption, "%", "")), "% 0.00")
End Sub
 
Size tavsiyem proje uygulamalarına girişmeden önce en azından basit IF-END IF sorgularını öğrenmeniz olacaktır. Yoksa çok bocalarsınız.

Bunlarla ilgili olarak hem forumda hem de nette bolca örnekler var. Araştırma yapıp bilgilerinizi genişletmeniz gerekiyor.

Bahsettiğiniz (LABEL) nesneler genellikle metinsel verileri depolamak amacıyla kullanılır. Bu sebeple matematiksel işlemlerde sıkıntı yaşamanız normaldir.

Ama tabi ki bu durum aşılamaz değildr.

Aşağıdaki gibi bir kurgu işinize yarayabilir. Kendi nesnelerinize uyarlarsınız.

C++:
Private Sub CommandButton1_Click()
    If Label1.Caption = "" Then Label1.Caption = 0
    If Label2.Caption = "" Then Label2.Caption = 0
    If Label3.Caption = "" Then Label3.Caption = 0
    Label4.Caption = Format(CDbl(Replace(Label1.Caption, "%", "")) + CDbl(Replace(Label2.Caption, "%", "")) + CDbl(Replace(Label3.Caption, "%", "")), "% 0.00")
End Sub


Kod:
Private Sub Topla_Click()
If Label56.Caption = "" Then Label56.Caption = 0
    If Label60.Caption = "" Then Label60.Caption = 0
    If Label62.Caption = "" Then Label62.Caption = 0
    Label64.Caption = Format(CDbl(Replace(Label56.Caption, "%", "")) + CDbl(Replace(Label60.Caption, "%", "")) + CDbl(Replace(Label62.Caption, "%", "")), "% 0.00")

End Sub
Hocam tüm Labeller dolu olunca Label64 de yüzde olarak gelirken bir veya daha fazla label boş olunca ekte ekran görüntüsündeki hata mesajını veriyor.
 

Ekli dosyalar

  • Adsız.jpg
    Adsız.jpg
    81.3 KB · Görüntüleme: 3
Hepsi boş bile olsa bile kod çalışacaktır.

Bence boş olma durumunu kontrol ediniz. Nesne boş ise hiçbir şey yazmaması gerekiyor.
 
Uyguladığınız dosyanızı paylaşınız.
 
Hocam bendeki userformu ekledim. tüm Labeller dolu olmayınca hata veriyor.
 

Ekli dosyalar

Label56 nesnesini kontrol ediniz. (BOŞ DEĞİL)

Diğerlerini de kontrol edin. Onlarda boş değil.

Boş demek üzerinde hiçbir şey yazmıyor olmasıdır.
 
Formu ekrana çağırdığınızda oluşan görüntüyü paylaşır mısınız?
 
Korhan Hocam Label 62 yazıyormuş onu silince oldu. Çok teşekkür ederim. Emeğinize sağlık.
 
Geri
Üst