Rekenmodule met verwijzing data (vba)

Status
Niet open voor verdere reacties.

Robert Smidt

Gebruiker
Lid geworden
26 mei 2009
Berichten
901
Beste Helpmij'ers,

Ik ben op zoek naar een vba-code die een berekening maakt in werkblad 'Uitgaven' en de berekeningsgegevens genereert vanuit een ander werkblad (Persoonlijke instelling).

Wanneer ik in kolom I (factuurbedrag) een willekeurig bedrag zet het systeem eerst kijkt/zoekt onder categorie (in dit geval "Accountantskosten") deze in werkblad (Persoonlijke instelling) in kolom C welke gegevens in die regel vermeld staan. Het betreft hier een percentage zakelijk en vrijgesteld.

Stel de accountantskosten zijn €1.000 (kolom I), dan moet de btw berekend worden (zie werkblad: Persoonlijke instelling) over: 50% van €1.000 = €500. Van die €500 is 20% vrijgesteld, dus 80% niet vrijgesteld, de berekening is dan 80% van €500 = €450 waar tot slot 21% btw over berekend moet worden. In kolom K komt dan de uitkomst van: €450 / 121 * 21% = €78,10 te staan.

Code:
Range("K" & Target.Row) = ((((Range("I" & Target.Row)[COLOR="#FF0000"] * 50%) *(100%-20%))[/COLOR] / [Btwhoogformule].Value) * (100 * (Range("H" & Target.Row))))

Het gaat dus alleen om de bedragen hierboven in het rood die uit het systeem gehaald moeten worden vanuit werkblad Persoonlijke instellingBekijk bijlage Testberekening.xlsm.

In het VBA-project onder "Blad 8 (uitgaven) staat inmiddels een rekenmodule voorafgaand aan (---->)

Alvast heel erg bedankt voor het meedenken.

Robert
 
80% van 500 = 400.

Code:
Set c = Sheets("Persoonlijke instelling").Columns(3).Find(Target.Offset(, -3))
        If Not c Is Nothing Then Target.Offset(, 2) = (Target * c.Offset(, 3)) * (1 - (c.Offset(, 4))) * 0.21
 
Harry, super bedankt voor jouw oplossen en inderdaad niet zo slim van mij om een rekenvaud in het formulevoorbeeld te zetten. Des te meer ben ik ontzettend content met mensen zoals jij die mij altijd weer super goed helpen...Nogmaals heel erg bedankt.
 
Sorry voor het ongemak, tijdens het testen kwam ik toch nog een foutmelding tegen. Wanneer ik later de categorie wijzig omdat ik deze per ongeluk onjuist heb aangeklikt, geeft deze een foutmelding (Typen komen niet met elkaar overeen).
 
Wist ik, pas de 'intersect' aan, of de range benoeming zoals in jouw voorbeeld.
Heb helaas geen tijd meer vandaag om dit voor je te doen.
 
Dank je, ik heb de range benoeming gewijzigd in:
Code:
Set c = Sheets("Persoonlijke instelling").Columns(3).Find(Range("F" & Target.Row))
          If Not c Is Nothing Then Range("K" & Target.Row) = (Range("I" & Target.Row) * c.Offset(, 3)) * (1 - (c.Offset(, 4))) / [Btwhoogformule].Value * [Btwhoogtarief] * 100

Zal alle opties nog even doorlopen, maar denk dat het nu helemaal goed gaat...

Nogmaals heel erg bedankt.
 
Nog één laatste puntje. De uitkomst genereert een getal met meer dan twee decimalen achter de komma. Kan de vba dit ook beperken tot twee decimalen?
 
Dat kan.
Code:
=[COLOR=#0000ff]format([/COLOR](Range("I" & Target.Row) * c.Offset(, 3)) * (1 - (c.Offset(, 4))) / [Btwhoogformule].Value * [Btwhoogtarief] * 100[COLOR=#0000ff],"0.00")[/COLOR]
 
Dank je wel....helaas rond hij bij mij op hele euro's af....Omdat het vanuit alle kolommen één bedrag betreft die hier fout gaat, laat ik deze herberekenen d.m.v. een rekensom vanuit de kolommen die wel op twee decimalen afronden. Niet helemaal chique, maar werkt wel :). Mocht het in de toekomst voorkomen dat het bij meerdere kolommen fout gaat, zal ik hier de vraag nogmaals stellen...Voor nu heel erg bedankt. :thumb:
 
Hier wordt het getal niet afgerond.

bijvoorbeeld:
factuurbedrag: 25,12
btw hoog: 2,11

factuurbedrag: 2333,56
btw hoog: 196,02
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan