Toon posts:

[VB | Excel Macro] Doubles

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben voor het eerst sinds een paar jaar weer eens bezig met VB in de vorm van een Excel Macro, en ik moet zeggen, bevalt me niet echt...

Ik heb een form met (oa) een listbox, textfield, label en knop

In het textfield kan met een getal invullen (double) en die moet dan bij de waarde van het label opgeteld worden (ook een double)

Dit werkt wel als de waarde van het label 0 is. Als ik dan 29.95 in het tekstvak invul en op de knop druk krijg ik mooi 29.95 in mijn label te staan.
Als ik er dan nog eens 29.95 bij optel wordt het in ene 58.95, terwijl dit (lijkt me) toch echt 58.90 moet zijn...

Code voor het optellen:
code:
1
label.Caption = Val(label.Caption) + Val(text.Value)


Dan is er nog een ander probleem, en dat is dat VB de getallen achter de komma niet lijkt te onthouden. Er is een array aangemaakt die voor elk item in de listbox dit getal bijhoudt. Laten we deze array voor de simpelheid ff myArray noemen.

Als men op een ander item van de listbox drukt word de huidige waarde van de label opgeslagen in de array en de nieuwe waarde uit de array gehaald, als volgt:
code:
1
2
3
4
5
6
  'save
  'lastIndex is de listIndex van de listbox voordat deze veranderd was.
myArray(lastIndex) = Val(label.Caption)
  'load
  'index = listbox.listIndex
label.Caption = myArray(index)


Dit werkt redelijk. Alleen als bijvoorbeeld het bedrag 58.95 van hierboven opgeslagen word en weer opgehaald, dan krijg ik geen 58.95 terug, maar gewoon 58.

Iemand een idee wat ik fout doe? Want ik kom er echt niet meer uit. Heb al google geprobeerd en GoT ook al doorzocht, maar kan geen oplossing vinden...

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Misschien een idee om ipv Val de functie CDbl of CSng te gebruiken? Dan converteer je in elk geval naar het juiste type.
Ik zeg niet dat dat het is, maar wie weet.

Verwijderd

Topicstarter
CDbl() Helpt niet :(

  • Lister
  • Registratie: September 2001
  • Laatst online: 15-02-2022
Volgens mij heb je last van het aloude probleem van de "." en "," scheidingstekens.
Maar dan met een beetje vaagheid toegevoegd omdat je .Caption en .Value properties door elkaar heen gebruikt.

.Value levert waarschijnlijk wel een getal op met juiste scheidingsteken terwijl .Caption gewoon een string van een getal met een verkeerd scheidingsteken oplevert.

Als beide waardes 29.95 zijn, dan levert Val(label.Caption) + Val(text.Value) waarschijnlijk (29 + 29.95) op en dat wordt dan weer 58.95 op terwijl je eigenlijk 59.90 wil hebben (en niet 58.90 ;) )

Als je overal een "," gebruik in plaats van een "." werkt het dan wel?

Verwijderd

Topicstarter
edit: ruzie met edit en reply... :S

[ Voor 115% gewijzigd door Verwijderd op 15-12-2003 21:02 ]


Verwijderd

Topicstarter
Nee, helaas, dat is het ook niet...
Als ik een , gebruik werkt het helemaal niet. Dan krijg ik meteen '30' ipv '29,95'

Zit er aan te denken om bedragen maar op te splitsen in twee integers en dan zelf te parsen mbv mid$ enzo ...

edit:typo

[ Voor 25% gewijzigd door Verwijderd op 15-12-2003 21:01 ]


Verwijderd

Dit werkt bij mij goed:
code:
1
Label1.Caption = CStr(CDbl(Label1.Caption) + CDbl(TextBox1.Value))

  • KingRichard
  • Registratie: September 2002
  • Laatst online: 21-03-2025

KingRichard

former Duke of Gloucester

Heb je dit al geprobeerd?
code:
1
Label1.Caption = Label1.Caption + TextBox1.Value
Dit zou moeten werken, als je instellingen voor het scheidingsteken goed staan.

a horse! a horse! my kingdom for a horse! (exeunt)
[got.profile] | [t.net.profile] | [specs]

Pagina: 1