çarpım hatası

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
562
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
Merhaba ,
If IsNumeric(TextBox17.Value) Then mz = TextBox17.Value
If IsNumeric(TextBox18.Value) Then ug = TextBox18.Value
TextBox19.Value = Format(mz * ug, "#,##0.00")
hba.Cells(bossatir, 6) = TextBox19.Value 'ilk Tutar...
Arkadaşlar textbox17 nın değeri 18040 textbox18 in değeri 2,3 sonuç ne olması gerekir
elbette41492 olması gerek ama dosyamda sonuç 414920 çıkıyor
ug = 23 e dönüşüyor nedeni ni bulamadım yardım lütfen !
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,084
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
2,3 yazarken virgül yerine nokta dener misiniz?
 

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
562
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025

Merhaba Arkadaşlar d2 hücresinin gerçek değeri 71155,99 olması gerek ama yazdığım kodlarda nasıl


bir hatam varki textboxta da 71156,00 olarak sonuç veriyor .


doğru sonuca ulaşmak için desteğinizi bekliyorum teşekkürler.
dosya ekte

 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,453
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Aynı işlemi excel hücresinde yaparsanız sonuç aşağıdaki gibi çıkar.

71.155,9975068

Eğer küsürat hanesini 2 karakter yaparsanız sonuç yuvarlanarak aşağıdaki gibi görünür.

71.156,00
 

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
562
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
korhan bey , ben dosyamı makro üzerine oluşturuyorum , dolayısıyla excel üzerinde formülle işlem yaptırmıyorum .
Mümkün se hem textboxa hemde excele 71.155,99 şeklinde yazılsın
 

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
562
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
korhan bey sub tutar da değişiklik yaptım textboxa 71155,99 u yazdırıyorum ama bu seferde excele 7.155.599,00 şeklinde yazdırıyor
 

Ekli dosyalar

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
562
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
Deneme yanılma sonunda istediğimi buldum . Bulduğum sonucu da sizlerle paylaşıyorum ,ilgilenen tüm arkadaşlara teşekkürler .
Yinede alternatif bir fikri olan varsa görmek isterim , teşekkürler.
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,453
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Ben durumun neden kaynaklandığını size anlatabilmek adına excel hücresi üzerinden örnek verdim. Aynı durum vba tarafı içinde geçerlidir. Hesaplama sonucu nasıl görmek istiyorsanız o şekilde kod kurgusu kurup kullanabilirsiniz. Zaten bu yönde de çözüme ulaşmışsınız.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,453
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Ek olarak aşağıdaki gibi bir yapıyı da deneyebilirsiniz.

Hesaplama sonuçlarını excelin "AŞAĞIYUVARLA" işlevi ile sizin belirttiğiniz gibi göstermektedir.

C++:
Private Sub CheckBox1_Click()
    Call Tutar_Hesapla
End Sub

Private Sub CommandButton1_Click()
    Son = Cells(Rows.Count, 1).End(3).Row + 1
    
    Cells(Son, 1) = CDbl(TextBox1)
    Cells(Son, 2) = CDbl(TextBox2)
    Cells(Son, 3) = IIf(CheckBox1 = True, "KDV Dahil", "KDV Hariç")
    Cells(Son, 4) = CDbl(TextBox4)
    
    MsgBox "Kayıt işlemi tamamlanmıştır.", vbInformation
End Sub

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
    TextBox1 = Format(TextBox1, "#,##0.00")
End Sub

Private Sub TextBox1_Change()
    Call Tutar_Hesapla
End Sub

Private Sub TextBox2_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
    TextBox2 = Format(TextBox2, "#,##0.000000")
End Sub

Private Sub TextBox2_Change()
    Call Tutar_Hesapla
End Sub

Sub Tutar_Hesapla()
    Dim Kdv As Double
    
    Kdv = 1.01
    
    If TextBox1 = "" Then TextBox1 = 0
    If TextBox2 = "" Then TextBox2 = 0
    
    If CheckBox1 = True Then
        TextBox3 = Format(Replace(TextBox1 * TextBox2, ".", "") * 0.01, "#,##0.00")
        TextBox4 = Format(WorksheetFunction.RoundDown(Replace(TextBox1 * TextBox2, ".", "") * Kdv, 2), "#,##0.00")
    Else
        TextBox3 = 0
        TextBox4 = Format(WorksheetFunction.RoundDown(Replace(TextBox1 * TextBox2, ".", ""), 2), "#,##0.00")
    End If
End Sub
 

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
562
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
Korhan uzmanım , alternatif verdiğiniz kod isteğime daha uygun verdiğiniz bu kodu gerçek dosyamda kullanacağım .
Bu kod da henüz bilmediğim bazı işlevleri anlamak için f8 tuşuyla takip etsem de
Format(WorksheetFunction.RoundDown(Replace(TextBox1 * TextBox2, ".", "") * Kdv, 2), "#,##0.00")
replace yani değiştir işlevini çözemedim .
Burada nasıl bir değişiklik yapıyor replace fonksiyonu ,
saygılarımla,
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,453
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Replace komutu hesaplama sonucunda oluşabilecek nokta sembolünü kaldırıyor.
 
Üst