Userform Textbox verileri ile ilgili Hesaplama Hatası

esnaf88

Altın Üye
Katılım
12 Mayıs 2005
Mesajlar
24
Altın Üyelik Bitiş Tarihi
31-01-2026
Merhaba,
Üzerinde deneme çalışması yaptığım dosyada karşılaştığım bir sorunu çözemedim. Yardımcı olacak arkadaşlara şimdiden teşekkür ederim.
Sorun şu: Satın alınan ürün fiyata %10 KDV Dahil olarak alınıyor. Satıcı KDV'siz fiyat üzerinden %5 İskonto uygulayıp İskontolu Tutara %10 KDV uyguluyor.
Yazmaya çalıştığım kodlar, bu şekilde satın alınan 25 birim ürünün nihai Tutarını 880,95 TL yerine, 875 TL olarak hesaplıyor.
Nerede hata yapıyorum çözemedim.

Not: Ürün Yün ise Miktar bölümüne 5 (paket) yazılınca (Paket içeriğinde 5 yumak olduğu için) 5 ile çarparak 25 birim olarak hesaplıyor.
 

Ekli dosyalar

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,491
Excel Vers. ve Dili
2019 Türkçe
Merhaba.
Değişken türlerini integer yapmışsınız double olmalı
İnteger tamsayı değişkendir
Double ondalık değişkendir.
Kod:
Dim kdvsizfiyat As Integer, iskontolufiyat As Integer, kdvlifiyat As Integer
Aşağıdaki gibi olmalı.
Kod:
Dim kdvsizfiyat As Double, iskontolufiyat As Double, kdvlifiyat As Double
 

esnaf88

Altın Üye
Katılım
12 Mayıs 2005
Mesajlar
24
Altın Üyelik Bitiş Tarihi
31-01-2026
Teşekkür ederim. Dediğiniz gibi değiştirdim. Doğru hesaplandı.
Fakat yukarıda bahsetmiş olduğum hesaplamadaki gibi 880,95 TL yerine, 881 olarak YUKARI YUVARLIYOR..
Küsuratı nasıl gösterebilirim?
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,491
Excel Vers. ve Dili
2019 Türkçe
5 textboxun kodu da aynı bir prosedür yazıp hepsine çağıracak şekilde yazmak kodları kısaltır.
Kodlarda da ufak değişiklikler yaptım.

Kod:
Private Sub txtmiktar_Change()
    Hesapla
End Sub

Private Sub txtalis_Change()
    Hesapla
End Sub

Private Sub txtkdv_Change()
    Hesapla
End Sub

Private Sub txtiskonto_Change()
    Hesapla
End Sub

Private Sub txtsatis_Change()
    Hesapla
End Sub

Sub Hesapla()
    Dim kdvsizfiyat As Double, iskontolufiyat As Double, kdvlifiyat As Double
    
    kdvsizfiyat = SayıKontrol(txtalis) / (1 + (SayıKontrol(txtkdv) / 100))
    iskontolufiyat = SayıKontrol(kdvsizfiyat) / (1 + (SayıKontrol(txtiskonto)) / 100)
    kdvlifiyat = SayıKontrol(iskontolufiyat) * (1 + (SayıKontrol(txtkdv) / 100))
    
    If comturu.Text = "Yün" And txtiskonto.Text <> "" Then
        txtmaliyet = Format(((CDbl(SayıKontrol(kdvlifiyat)) * CDbl(SayıKontrol(txtmiktar)))), "#,##0.00") * 5
        txtgelir = Format(((CDbl(SayıKontrol(txtmiktar)) * CDbl(SayıKontrol(txtsatis)))), "#,##0.00") * 5
    Else
        txtmaliyet = Format(((CDbl(SayıKontrol(kdvlifiyat)) * CDbl(SayıKontrol(txtmiktar)))), "#,##0.00")
        txtgelir = Format(((CDbl(SayıKontrol(txtsatis)) * CDbl(SayıKontrol(txtmiktar)))), "#,##0.00")
    End If
End Sub
 

esnaf88

Altın Üye
Katılım
12 Mayıs 2005
Mesajlar
24
Altın Üyelik Bitiş Tarihi
31-01-2026
Çok teşekkür ederim. Emeğinize sağlık.
İyi çalışmalar.
 
Üst