Ga naar inhoud

Currency in lezen van excel cell VBA


Aanbevolen berichten

Je code klopt niet. Deze regel:[code:1:b765d58e47]lineprice = begincell.Offset(i, 1) [/code:1:b765d58e47] probeert in de variabele lineprice (type Currency) een object van het type Range te stoppen. Dat is dus een Type mismatch ;) Wat je zou moeten doen is dit:[code:1:b765d58e47]lineprice = begincell.Offset(i, 1).Value[/code:1:b765d58e47]
Link naar reactie
[quote:13416544b2="bertjedeb"]OKe bedankt, toch nog een vraagje, indien je een integer of String gebruikt werkt het wel. Wat is daar de reden voor?[/quote:13416544b2] Ik heb nog even wat zitten testen, maar als het goed is, zouden alle drie de mogelijkheden (string, integer en currency) geen problemen mogen opleveren. Met dien verstande dat een integer natuurlijk altijd wordt afgerond. Waarschijnlijk komt je code dus een veld tegen met een waarde waar het op vastloopt. Waardoor dat komt, kan ik je zo niet zeggen, daar zou ik de waardes voor moeten zien.
Link naar reactie
Ik had mijn vraag denk ik niet goed geformuleerd. De macro werkt nu omdat ik offset( x, y).value gebruik. Maar ik heb nu ff snel een andere Macro geschreven zie code: [code:1:913286a346] Private Sub CommandButton1_Click() Dim range1, range2, returnrange As Range Dim intreturn, temp, i As Integer Dim doublereturn, tempdouble As Double Set range1 = Range("C2") Set range2 = Range("D2") For i = 0 To 7 Step 1 temp = range1.Offset(i, 0) intreturn = intreturn + temp tempdouble = range2.Offset(i, 0) doublereturn = doublereturn + tempdouble range1.Offset(i, 2) = intreturn range2.Offset(i, 2) = doublereturn Next End Sub [/code:1:913286a346] deze werkt gewoon zonder value te gebruiken. enig idee hoe dat kan niet echt structureel het programeren in VBA.
Link naar reactie
[quote:72de2f037f="bertjedeb"]Ik had mijn vraag denk ik niet goed geformuleerd. De macro werkt nu omdat ik offset( x, y).value gebruik. Maar ik heb nu ff snel een andere Macro geschreven zie code: [code:1:72de2f037f] Private Sub CommandButton1_Click() Dim range1, range2, returnrange As Range Dim intreturn, temp, i As Integer Dim doublereturn, tempdouble As Double Set range1 = Range("C2") Set range2 = Range("D2") For i = 0 To 7 Step 1 temp = range1.Offset(i, 0) intreturn = intreturn + temp tempdouble = range2.Offset(i, 0) doublereturn = doublereturn + tempdouble range1.Offset(i, 2) = intreturn range2.Offset(i, 2) = doublereturn Next End Sub [/code:1:72de2f037f] deze werkt gewoon zonder value te gebruiken. enig idee hoe dat kan niet echt structureel het programeren in VBA.[/quote:72de2f037f] Volgens mij is Value de default property van een een range-object, want dat krijg je terug wanneer je de offset aanroept. Een default property hoef je niet expliciet te coderen. Bij een Textbox is Text de default property, dus daar hoef je Text ook niet te gebruiken als je de waarde van die textbox wilt weten. En VBA is inderdaad niet echt een taal die je dwingt om gestructureerd te programmeren. Maar goed, het is ook voornamelijk bedoeld om Officetaken te automatiseren. Oh ja, nog een ding over jouw code: ik neem aan dat je range1 en range2 als Range wilde declareren? Dat is nu namelijk niet het geval: range1 en range2 zijn in jouw code van het type Variant. Waar je in andere talen een reeks variabelen tegelijk als een bepaald DataType kan declareren, daar moet je dat in VB(A) per variabele doen. Dus niet: [code:1:72de2f037f] Dim range1, range2, returnrange As Range [/code:1:72de2f037f] maar [code:1:72de2f037f] Dim range1 as Range, range2 as Range, returnrange As Range [/code:1:72de2f037f] Maakt voor je code niks uit, maar voor het geheugengebruik wel. Een variant neemt altijd de meeste bytes in.
Link naar reactie
[quote:5c6aacc21c="bertjedeb"]Indien je een Integer gebruikt moet je dat dan ook doen? [/quote:5c6aacc21c]Yep. Je moet in VBA altijd iedere variabele expliciet declareren, anders wordt het een Variant. Voor de werking maakt het niks uit, het is dus vooral netjes en voor het geheugengebruik. Alhoewel, volgens mij moet je een flinke VBA applicatie schrijven voordat je er last van krijgt ;)
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...