Decimalen

Status
Niet open voor verdere reacties.

Jaws77

Nieuwe gebruiker
Lid geworden
18 apr 2014
Berichten
3
Hallo allemaal,
Voor school moet ik met VBA in Word een rekenmachine maken, alleen gaat er bij mij iets mis met de decimalen. Bijvoorbeeld: 110+292,50+90+39, normaal komt hier 531,50 uit, alleen in VBA komt er 531 uit. Ik heb al op internet naar verschillende dingen gezocht, alleen snap ik daar niks van, aangezien ik nog niet heel ervaren ben :P Kan iemand mij vertellen hoe ik ervoor kan zorgen dat het wel goed gaat met de decimalen?

Groet!
 
Als je een integer datatype voor de variabele van de uitkomst van je berekening gebruikt zal deze inderdaad naar boven worden afgerond tot een geheel getal. Gebruik dus bij de Dim van die variabele niet een Integer maar een Double of een Decimal.
 
Ik heb nu dit:

Code:
Dim TotaalS As String
Dim Totaal As Double

Kun je vertellen wat ik nu moet aanpassen?
 
Dat is uit die twee regeltjes uiteraard niet op te maken.
 
Code:
Private Sub cmdBereken_Click()

Dim ExplorersS As String
Dim Explorers As Double
Dim InkomstenS As String
Dim Inkomsten As Double
Dim AantalautosS As String
Dim Aantalauto As Double
Dim GebouwS As String
Dim Gebouw As Double
Dim ToegangS As String
Dim Toegang As Double
Dim EtenS As String
Dim Eten As Double
Dim BenzineS As String
Dim Benzine As Double
Dim TotaleuitgavenS As String
Dim Totaleuitgaven As Double
Dim TekortS As String
Dim Tekort As Double

ExplorersS = txtExplorers
InkomstenS = txtInkomsten
AantalautosS = txtAantalautos
GebouwS = txtGebouw
ToegangS = txtToegang
EtenS = txtEten
BenzineS = txtBenzine
TotaleuitgavenS = txtTotaleuitgaven
TekortS = txtTekort

txtInkomsten = txtExplorers * 35
txtAantalautos = txtExplorers / 4

txtGebouw = 110
txtToegang = txtExplorers * 19.5 + 58.5
txtEten = txtExplorers * 6 + 18
txtBenzine = txtAantalautos * 6.5 * 2

txtTotaleuitgaven = Val(txtGebouw) + Val(txtToegang) + Val(txtEten) + Val(txtBenzine)

txtTekort = Val(txtTotaleuitgaven) - Val(txtInkomsten)
End Sub
 
Het is handiger als je het document plaatst waar dit in staat.
 
Ik snap helemaal niks van je declaraties.
Code:
Dim ExplorersS As String, InkomstenS As String, AantalautosS As String, GebouwS As String, ToegangS As String, EtenS As String, BenzineS As String, TotaleuitgavenS As String, TekortS As String
Dim Explorers As Double, Inkomsten As Double, Aantalauto As Double, Gebouw As Double, Toegang As Double, Eten As Double, Benzine As Double, Totaleuitgaven As Double, Tekort As Double
Waarom alles dubbel? En waarom überhaupt tekstvelden gebruiken als je wilt rekenen? Dan heb je echt alleen getallen nodig!
En dan dit:
Code:
ExplorersS = txtExplorers
InkomstenS = txtInkomsten
AantalautosS = txtAantalautos
Dan héb je getalvariabelen, zet je de getallen in de tekstvariabelen! En ga je daar vervolgens mee rekenen! Ook niet echt handig dus. Nogmaals: Ed zei het ook al: gebruik getalvariabelen (van het juiste soort) als je wilt rekenen. En zet de uitkomst pas terug als alles klaar is.
Dus: wijs de getallen op de juiste manier toe aan je variabelen, dus niet: AantalautosS = txtAantalautos, maar Aantalautos = CInt(txtAantalautos) (en AantalAutos is natuurlijk een Integer, geen Double. Tenzij je halve auto's verkoopt).
 
Jaws77

De fout zit in het gebruik van de functie VAL, deze geeft altijd een integere waarde terug, gebruik hiervoor in de
plaats CDbl.

Veel Succes.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan