VBA format gebruikten voor rekenkundige oplossing.

Status
Niet open voor verdere reacties.

Robert Smidt

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

Ik had een rekenformule (VBA-code) die in eerste instantie een groot aantal karakters achter de komma plaatste. Omdat te voorkomen heb ik hier een antwoord gekregen door er "Format" voor te zetten en vervolgens op het eind "0,00". Nu werkt dit perfect, althans hij maakt er twee decimalen van, alleen kan de VBA-code de inhoud nu niet meer uitrekenen. Echter, Excel zelf kan hier wel mee rekenen, hij maakt er bijvoorbeeld geen tekst cel van. Volgens mij moet er een toevoeging komen aan "Format" waardoor deze er altijd een rekenkundige cel van maakt.

Code:
Range("N" & Target.Row) = Format((Range("N" & Target.Row) * (1 - Range("J" & Target.Row))), "0.00") 'Btw hoog

Weet iemand hoe ik voorgaande code kan aanpassen?

Alvast bedankt.

Robert
 
Ik zou er niet de Format functie voor gebruiken. Doe het eens zo:
Code:
Range("N" & Target.Row).NumberFormat = "0.00"
Range("N" & Target.Row) = Range("N" & Target.Row) * (1 - Range("J" & Target.Row)) [COLOR="#008000"]'Btw hoog[/COLOR]
 
Helaas werkt het niet, ik heb ook nog een aantal varianten gebruikt, ook zonder resultaat. Hij blijft meer dan 2 decimalen geven. Ik zal kijken of ik hier een voorbeeld bestand van kan maken. Mijn bestand is te uitgebreid om deze te plaatsen. Tenzij je misschien een andere oplossing hebt.
 
Die numberformat maakt er een nummerieke cel van met 2 decimalen.
Dus "werkt niet" is erg kort door de bocht en ben ik benieuwd naar je voorbeeld document.
 
Laatst bewerkt:
Bekijk bijlage decimaal.xlsm

Ik doe hierbij een voorbeeld bestand toekomen. Door het percentage in kolom J13 te wijzigen treedt de code in werking. Je ziet in de formulebalk dat de code meerdere decimalen geeft. Ik heb jouw voorbeeld gebruikt voor kolom O (zie vba). Ik hoop dat het lukt...:). Wederom alvast bedankt.
 
Ik heb O13 gewijzigd in een cel met 6 decimalen.
Als ik nu in J13 het percentage wijzig staat er in O13 keurig een getal met 2 decimalen.
In de formulebalk staat uiteraard wel het complete getal.
Als je dat niet wilt moet niet het format aanpassen maar het getal afronden.
 
Laatst bewerkt:
Het gaat volgens mij goed, wel vreemd dat het dan wel goed gaat. Volstaat het trouwens om de code
Code:
Range("O" & Target.Row).NumberFormat = "0.00"
boven aan de macro te zetten zodat deze van toepassing is voor alle formules?
 
Dat kan, maar ik zou het daar zetten waar het hoort.
 
Ik heb het getest in het originele bestand en daar gaat het niet goed. Het bedrag in kolom L moet exact gelijk zijn aan het totaal van kolom M, N en O. Dus zal de code toch moeten afronden, is dat mogelijk?
 
Het format van een cel is iets anders dan een getal afronden. De code die ik gaf is voor het format en dat veranderd niets aan het getal.
 
Klopt, ik dacht dat ik format kon gebruiken om op twee decimalen af te ronden. Dit heb ik dus verkeerd begrepen. Het is toch echt de bedoeling dat het systeem de bedragen op twee decimalen afrond in de taakbalk.
 
dank je wel voor de turtorial, ik begrijp er nog niet zoveel van en zal deze morgen bestuderen hoe ik deze kan toepassen op mijn probleem. Voor nu heel hartelijk bedankt voor jouw hulp.
 
Bedankt voor de link, dit werkt idd prima wanneer je met formules werkt, helaas met vba werkt dit niet.
 
Code:
Sub M_snb()
    x = 12.345678
    y = 21
    
    MsgBox Round(Round(x, 2) * y / 100, 2)
    MsgBox Round(Round(x, 2) * (100 + y) / 100, 2)
End Sub
 
Heel hartelijk dank voor de oplossing. Inmiddels ben ik aan de hand van de link zelf aan het experimenteren gegaan en heb volgens mij de oplossing.

Code:
Range("N" & Target.Row) = Round(Range("N" & Target.Row) * (1 - Range("J" & Target.Row)), 2) 'Btw hoog

Tijdens het testen rondde deze altijd af op 2 decimalen en heb ik geen fouten kunnen ontdekken.

De oplossing van SNB neem ik graag ter harte en zal deze zeker proberen.

Allemaal heel erg bedankt voor het meedenken en het aanleveren van de uiteindelijke oplossing.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan