• DİKKAT !

    Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak Dosya Yükleme tamamen ücretsizdir.

Çözüldü Gelir Vergisi Hesaplama Makro hatası

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

gultekinkaymaz

Yeni Üye
Katılım
7 Şub 2022
Mesajlar
124
Aldığı beğeni
17
Excel V
Office 2016 TR
Konu Sahibi
Herkese merhaba,
Aşağıda yer alan hesaplama kodlarım evdeki bilgisayarımda gayet sorunsuz çalışıp hesaplama yaparken iş yerimdeki bilgisayarda TextBox27.Value = GV satırı Error 2015 hatası vermektedir.

If IsNumeric(TextBox1.Value) And IsNumeric(TextBox21.Value) And IsNumeric(TextBox22.Value) And IsNumeric(TextBox23.Value) And IsNumeric(TextBox24.Value) And IsNumeric(TextBox25.Value) And IsNumeric(TextBox26.Value) And IsNumeric(TextBox10.Value) And IsNumeric(TextBox13.Value) And IsNumeric(TextBox14.Value) Then
TextBox3.Value = Format(CDbl(TextBox1.Value) / (1 + CDbl(TextBox21.Value) / 100), "#,##0.00")
TextBox2.Value = Format(CDbl(TextBox1.Value) - CDbl(TextBox3.Value), "#,##0.00")
TextBox4.Value = CDbl(TextBox3.Value) * CDbl(TextBox22.Value) / 100
TextBox5.Value = CDbl(TextBox3.Value) * CDbl(TextBox23.Value) / 100
TextBox6.Value = CDbl(TextBox3.Value) * CDbl(TextBox24.Value) / 100
TextBox7.Value = CDbl(TextBox3.Value) * CDbl(TextBox25.Value) / 100
TextBox8.Value = CDbl(TextBox3.Value) * CDbl(TextBox26.Value) / 100
TextBox30.Value = CDbl(TextBox3.Value) * CDbl(TextBox31.Value) / 100
TextBox11.Value = TextBox3.Value - TextBox4.Value - TextBox5.Value - TextBox6.Value - TextBox7.Value - TextBox8.Value - TextBox9.Value
TextBox12.Value = TextBox11.Value * (TextBox10.Value / 100)
TextBox15.Value = CDbl(TextBox13.Value) + CDbl(TextBox14.Value)
TextBox16.Value = Format(Application.VLookup(ComboBox1.Value, Sheets("VERGİLER").Range("F2:G13"), 2, False), "#,##0.00")
GV = Evaluate("SUMPRODUCT(--(" & CDbl(TextBox13.Value) & "+" & CDbl(TextBox14.Value) & ">VERGİLER!$D$1:$D$5), (" & CDbl(TextBox13.Value) & " +" & CDbl(TextBox14.Value) & "-VERGİLER!$D$1:$D$5),VERGİLER!$E$2:$E$6-VERGİLER!$E$1:$E$5)-SUMPRODUCT(--(" & CDbl(TextBox14.Value) & ">VERGİLER!$D$1:$D$5), (" & CDbl(TextBox14.Value) & "-VERGİLER!$D$1:$D$5), VERGİLER!$E$2:$E$6-VERGİLER!$E$1:$E$5)")

TextBox27.Value = GV (Bu satır Error 2015 hatası veriyor)

TextBox28.Value = CDbl(TextBox12.Value) + CDbl(TextBox15.Value)
GV2 = Evaluate("SUMPRODUCT(--(" & CDbl(TextBox12.Value) & "+" & CDbl(TextBox15.Value) & ">VERGİLER!$D$1:$D$5), (" & CDbl(TextBox12.Value) & " +" & CDbl(TextBox15.Value) & "-VERGİLER!$D$1:$D$5),VERGİLER!$E$2:$E$6-VERGİLER!$E$1:$E$5)-SUMPRODUCT(--(" & CDbl(TextBox15.Value) & ">VERGİLER!$D$1:$D$5), (" & CDbl(TextBox15.Value) & "-VERGİLER!$D$1:$D$5), VERGİLER!$E$2:$E$6-VERGİLER!$E$1:$E$5)")


Dim txt3, txt4, txt5, txt6, txt7, txt8, txt9 As Double

If (CDbl(TextBox16.Value) - CDbl(TextBox27.Value)) < 0 Then
TextBox29.Value = 0
Else
TextBox29.Value = Format(CDbl(TextBox16.Value) - CDbl(TextBox27.Value), "#,##0.00")

End If

If (GV2 - (TextBox29.Value)) < 0 Then
TextBox17.Value = 0
Else
TextBox17.Value = Format(GV2 - CDbl(TextBox29.Value), "#,##0.00")

End If



txt3 = TextBox3.Value
txt4 = TextBox4.Value
txt5 = TextBox5.Value
txt6 = TextBox6.Value
txt7 = TextBox7.Value
txt8 = TextBox8.Value
txt9 = TextBox9.Value
TextBox11.Value = txt3 - txt4 - txt5 - txt6 - txt7 - txt8 - txt9





End If

TextBox18.Value = Format(CDbl(TextBox28.Value) * ((759 / 100) / 1000), "#,##0.00")
TextBox19.Value = Format(CDbl(TextBox17.Value) + CDbl(TextBox18.Value), "#,##0.00")
TextBox20.Value = Format(CDbl(TextBox12.Value) - CDbl(TextBox19.Value), "#,##0.00")
 
Konu Sahibi
Hesaplamayı yaparken tam sayı girersem 6.000,00 gibi hesaplamayı yapıyor fakat 6.079,39 TL gibi küsuratlı sayı girersem hesaplama hata veriyor.

aşağıda yer alan excel formülünü vba koduna çevirerek kullanmaya çalıştığımda bazı durumlarda hata veriyor mesela aylık matrah 15.000 süregelen matrah 25.000 olursa hesaplamayı doğru yapıyor fakat aylık matrah 6.079,39 süregelen matrah 0,00 TL ise hata veriyor aynı tutarlar excel formülünde gayet başarılı şekilde sonuç veriyor. Kodu düzenlerken nerede hata yapıyorum?

TextBox13.Value = T9 ve TextBox14.Value = U9 olacak şekilde

Makro Kodu

GV = Evaluate("SUMPRODUCT(--(" & CDbl(TextBox13.Value) & "+" & CDbl(TextBox14.Value) & ">VERGİLER!$D$1:$D$5), (" & CDbl(TextBox13.Value) & " +" & CDbl(TextBox14.Value) & "-VERGİLER!$D$1:$D$5),VERGİLER!$E$2:$E$6-VERGİLER!$E$1:$E$5)-SUMPRODUCT(--(" & CDbl(TextBox14.Value) & ">VERGİLER!$D$1:$D$5), (" & CDbl(TextBox14.Value) & "-VERGİLER!$D$1:$D$5), VERGİLER!$E$2:$E$6-VERGİLER!$E$1:$E$5)")

Excel Formülü :

TOPLA.ÇARPIM(--(T9+U9>VERİLER!$E$1:$E$5); (T9+U9-VERİLER!$E$1:$E$5);VERİLER!$F$2:$F$6-VERİLER!$F$1:$F$5)-TOPLA.ÇARPIM(--(U9>VERİLER!$E$1:$E$5); (U9-VERİLER!$E$1:$E$5); VERİLER!$F$2:$F$6-VERİLER!$F$1:$F$5))
 
6.079,39 yerine (nokta ve virgülün yerini değiştirerek)
6,079.39 yazarak denediniz mi?
 
Bir kaç veri eklediğiniz bir dosyayı sitemize yüklerseniz dosyanızı inceleyip arkadaşlarla daha çabuk çözüm önerileri sunabiliriz.
 
Konu Sahibi
Bir kaç veri eklediğiniz bir dosyayı sitemize yüklerseniz dosyanızı inceleyip arkadaşlarla daha çabuk çözüm önerileri sunabiliriz.
Dosyayı ve tam sayı girince yapılan doğru hesaplama ile küsüratlı girince verdiği hatayı da ekliyorum

Kullanıcı Giriş : admin
Şifre : 1234
Vba Kod Şifresi : 03mayis1907

Ek Ödeme USerformu üzerinden işlem yapıyorum
 
Merhaba, textboxlarda kullanılan "," vba da "." olmalı, cdbl ile çevirdikten sonra format yerine round kullanmayı denediniz mi? örnek;
a = Round(cdbl(Textbox1.value),2)
gibi
 
Konu Sahibi
Sayın gultekinkaymaz
Dosyanızda çeşitli denemeler yaptım ancak hata vermedi. :unsure:
Normal hesaplıyor.
Tutarları tam yazdıysanız bir sorun yaşanmıyor ama küsüratlı rakamlarda hata veriyor mesela aylık matrah 6.000,00 şeklidne girilirse sorun yok ama 6.039,79 gibi bir değerse hata veriyor
 
Sorun Textbox değerlerinizden kaynaklanıyor.
Textboxa girdiğiniz değer 1.263,25 olsun,
vba bunu cdbl yaptığınızda; 1.26325 olarak okuyor
Aynı şekilde değer 1,263.25 olduğunda vba 1263.25 olarak okuyor.
Bunun için tek tek adımlayarak (Textbox exit eventlarını kullanmışsınız) bu eventlardan sonra textboxların aldığı dbl değerlerini inceleyin.
userx in dediği gibi, bende de sorun görünmüyor noktalamalardan dolayı, ama siz nokta yerine virgül kullandığınız için sorunla karşılaşıyorsunuz.
Misal aşağıdaki kodu bir deneyin;,

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1 = Empty Then
TextBox1 = Empty
Else
b1 = InStr(1, TextBox1, ".", vbTextCompare)
b2 = InStr(1, TextBox1, ",", vbTextCompare)
If b1 < b2 Then
TextBox1 = Replace(Replace(TextBox1, ".", ""), ",", ".")
ElseIf b2 < b1 Then
TextBox1 = Replace(TextBox1, ",", "")
End If
End If
TextBox1 = CDbl(TextBox1)
End Sub
ve textbox değerinin ne şekilde olduğuna bir bakın.
Hatta küçük bir yordam ile
sub deneme()
msgbox (Textbox1+0.25 )
end sub
gibi bir kod yazın ve bakın, değer istediğiniz sonucu veriyor mu? yoksa hatalı mı?
 
Konu Sahibi
Ben girerken 1263,25 olarak giriyorum dediğiniz gibi textbox exit eventi onu otomatik olarak 1.1263,25 formatına çeviriyor. Ortak kullanıma açacağım için en anlaşılır şekilde gözüksün istiyorum. Aslında illa bu formül olması da gerekmiyor kümülatif vergi matrahı üzerinden vergi hesaplayan bir formül de işime yarar benim ama onu bulamadım henüz maalesef

 
Ben girerken 1263,25 olarak giriyorum dediğiniz gibi textbox exit eventi onu otomatik olarak 1.1263,25 formatına çeviriyor. Ortak kullanıma açacağım için en anlaşılır şekilde gözüksün istiyorum. Aslında illa bu formül olması da gerekmiyor kümülatif vergi matrahı üzerinden vergi hesaplayan bir formül de işime yarar benim ama onu bulamadım henüz maalesef
Bu konuda size bir dosya önermiştim. İçerisindeki kodları incelerseniz sanırım işinize yarayacaktır.

Arşiv - Netten Brüte 2022 detaylı ve toplu maliyet hesaplama programı
 
Durum
Konu Çözümlendiği İçin Kapatılmıştır.
Geri
Üst