abonnement Unibet Coolblue
pi_75837043
Om maar meteen te beginnen, het volgende probleem:

Ik moet een algoritme (in Excel VBA) schrijven dat berekent hoeveel wisselgeld een kassier moet teruggeven aan een klant. Niet enkel het totaal terug te geven bedrag moet worden afgedrukt, maar het wisselgeld moet worden opgesplitst in de verschillende coupures (bijv. ¤634,33 = 1x500 + 0x200+ 1x100 +0x50 + 1x20 + 2x5+ 2x2+ 0x1+ 0x0,50 + 1x0,20 + 1x0,10 + 0x0,05 + 1x0.02+1x0,01)
Ervan uitgaande: terug te geven bedrag kleiner is dan 1000 euro.

Al wat uurtjes 'gespeeld' met VBA, maar helaas zonder resultaat. Wie helpt?

Ad
  zondag 20 december 2009 @ 14:33:59 #2
75592 GlowMouse
l'état, c'est moi
pi_75837077
wat voor code heb je nu?
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_75837136
quote:
Op zondag 20 december 2009 14:33 schreef GlowMouse het volgende:
wat voor code heb je nu?
Iets en niets, heb wat getikt, maar kreeg een foutmelding, vandaag de post.
  zondag 20 december 2009 @ 14:39:23 #4
67978 HenryHill
Fake it 'till you make it
pi_75837297
quote:
Op zondag 20 december 2009 14:33 schreef adbeentjes het volgende:
(bijv. ¤634,33 = 1x500 + 0x200+ 1x100 +0x50 + 1x20 + 2x5+ 2x2+ 0x1+ 0x0,50 + 1x0,20 + 1x0,10 + 0x0,05 + 1x0.02+1x0,01)
Hoe ben je tot bovenstaande uitwerking gekomen? Was dit een gegeven voorbeeld of heb je dit zelf uitgewerkt?

Immers, als je niet weet hoe je het probleem handmatig moet oplossen, dan hoef je al helemaal niet te proberen dit uit te leggen aan een computer
So this is how liberty dies... with thunderous applause.
Truth? What's so great about the truth? Try lying for a change, it's the currency of the world
pi_75837423
quote:
Op zondag 20 december 2009 14:39 schreef HenryHill het volgende:

[..]

Hoe ben je tot bovenstaande uitwerking gekomen? Was dit een gegeven voorbeeld of heb je dit zelf uitgewerkt?

Immers, als je niet weet hoe je het probleem handmatig moet oplossen, dan hoef je al helemaal niet te proberen dit uit te leggen aan een computer
Zelf 'uitgewerkt' dat is de zogenaamde bottum-up techniek, in delen oplossen van een 'groot' probleem.

De vraag zelf snap ik wel, maar hoe dat te vertalen in Excel...
pi_75837495
Idee

Klant moet betalen, bijv. ¤80.

Hij 'betaalt' met briefje van ¤100

Verschilfunctie 100-80=20 retour door kassier.

20 is 1x20 ivm rond getal...
  zondag 20 december 2009 @ 14:48:01 #7
67978 HenryHill
Fake it 'till you make it
pi_75837603
quote:
Op zondag 20 december 2009 14:44 schreef adbeentjes het volgende:
Idee

Klant moet betalen, bijv. ¤80.

Hij 'betaalt' met briefje van ¤100

Verschilfunctie 100-80=20 retour door kassier.

20 is 1x20 ivm rond getal...
Ok, en nu als iemand met een briefje van 100 voor 64 euro wil afrekenen. Welke coupures krijgt de klant dan terug?
So this is how liberty dies... with thunderous applause.
Truth? What's so great about the truth? Try lying for a change, it's the currency of the world
pi_75837610
Ken VB niet, dus hier wat pseudocode:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
valuta = array(500, 200, 100, 50, 20, 10, 5, 2, 1, .5, .2, .1, .05, .02, .01); // geldeenheden
aantal = array[15] of int; // hoeveel van elke geldeenheid terug te geven (init. op 0!)

i = 0;
while (wisselbedrag != 0 && i < 15) {
 if (wisselbedrag >= valuta[i]) {
  wisselbedrag = wisselbedrag - valuta[i];
  aantal[i] = aantal[i]+1;
 } else {
  i = i+1;
 }
}

for (i=0; i<15; i=i+1) {
 print(aantal[i] + " maal " + valuta[i] + "teruggeven.");
}
  zondag 20 december 2009 @ 14:49:40 #9
67978 HenryHill
Fake it 'till you make it
pi_75837658
quote:
Op zondag 20 december 2009 14:48 schreef Thorír het volgende:
Ken VB niet, dus hier wat pseudocode:
Lekker, vriend. In plaats dat je TS zelf na laat denken over zijn huiswerk
So this is how liberty dies... with thunderous applause.
Truth? What's so great about the truth? Try lying for a change, it's the currency of the world
pi_75837672
quote:
Op zondag 20 december 2009 14:48 schreef Thorír het volgende:
Ken VB niet, dus hier wat pseudocode:
[ code verwijderd ]


Ik kan wel wat aflezen, maar ik ken dat programma niet, en voor een beginner is het zowat onmogelijk om dit te begrijpen,,, heeft u dit ook 'gemaakt' met tabellen? Sequentie, iteratie etc.?
pi_75837727
quote:
Op zondag 20 december 2009 14:48 schreef HenryHill het volgende:

[..]

Ok, en nu als iemand met een briefje van 100 voor 64 euro wil afrekenen. Welke coupures krijgt de klant dan terug?
Op dezelfde wijze; 100-64=36 euro retour door kassier

36 euro =

1x20
1x10
1x5
1x1

euro..
pi_75837759
quote:
Op zondag 20 december 2009 14:50 schreef adbeentjes het volgende:

[..]

Ik kan wel wat aflezen, maar ik ken dat programma niet, en voor een beginner is het zowat onmogelijk om dit te begrijpen,,, heeft u dit ook 'gemaakt' met tabellen? Sequentie, iteratie etc.?
Dan moet je bij de print [i] iets van row en en nog wat invoegen in die code
pi_75837788
quote:
Op zondag 20 december 2009 14:49 schreef HenryHill het volgende:

[..]

Lekker, vriend. In plaats dat je TS zelf na laat denken over zijn huiswerk
Ik snap het probleem wel, en hoe je het moet oplossen, maar ik snap niet hoe dit in kaart te brengen in Excel VBA, ik moet een algoritme schrijven, waarschijnlijk moet Excel dan 'het spelletje spelen' van de kassier,
  zondag 20 december 2009 @ 14:56:35 #14
67978 HenryHill
Fake it 'till you make it
pi_75837975
quote:
Op zondag 20 december 2009 14:51 schreef adbeentjes het volgende:

[..]

Op dezelfde wijze; 100-64=36 euro retour door kassier

36 euro =

1x20
1x10
1x5
1x1

euro..
Ok, ben je met me eens dat de truc is om van het retourbedrag (in dit geval 36 euro) net zolang biljetten van 20 euro uit te betalen totdat je retourbedrag onder de 20 euro komt. Vervolgens ga je biljetten van 10 euro uitbetalen totdat het retourbedrag minder dan 10 euro is, etc.

Toch?
So this is how liberty dies... with thunderous applause.
Truth? What's so great about the truth? Try lying for a change, it's the currency of the world
pi_75838087
quote:
Op zondag 20 december 2009 14:56 schreef HenryHill het volgende:

[..]

Ok, ben je met me eens dat de truc is om van het retourbedrag (in dit geval 36 euro) net zolang biljetten van 20 euro uit te betalen totdat je retourbedrag onder de 20 euro komt. Vervolgens ga je biljetten van 10 euro uitbetalen totdat het retourbedrag minder dan 10 euro is, etc.

Toch?
Zeer zeker mee eens... steeds weer volgens hetzelfde stramien.
  zondag 20 december 2009 @ 15:00:56 #16
67978 HenryHill
Fake it 'till you make it
pi_75838145
quote:
Op zondag 20 december 2009 14:52 schreef adbeentjes het volgende:

[..]

Ik snap het probleem wel, en hoe je het moet oplossen, maar ik snap niet hoe dit in kaart te brengen in Excel VBA, ik moet een algoritme schrijven, waarschijnlijk moet Excel dan 'het spelletje spelen' van de kassier,
Ok, hoe had je dit voorgesteld in Excel?

Ik kan me voorstellen dat je twee cellen gebruikt, 1 voor het invullen van het te betalen bedrag en 1 voor hoeveel de klant geeft. Als uitvoer heb je dan een kolom met met onder elkaar de waardes van de coupures (500, 200, 100, etc.). De uitvoer van je programma komt dan in de kolom naast de coupures te staan.

Om de coupures uit te laten rekenen moet je op een knop drukken, deze start jouw VBA-code.

Zoiets?
So this is how liberty dies... with thunderous applause.
Truth? What's so great about the truth? Try lying for a change, it's the currency of the world
pi_75838252
quote:
Op zondag 20 december 2009 15:00 schreef HenryHill het volgende:

[..]

Ok, hoe had je dit voorgesteld in Excel?

Ik kan me voorstellen dat je twee cellen gebruikt, 1 voor het invullen van het te betalen bedrag en 1 voor hoeveel de klant geeft. Als uitvoer heb je dan een kolom met met onder elkaar de waardes van de coupures (500, 200, 100, etc.). De uitvoer van je programma komt dan in de kolom naast de coupures te staan.

Om de coupures uit te laten rekenen moet je op een knop drukken, deze start jouw VBA-code.

Zoiets?
Hier loop ik vast, ik weet niet hoé. Voorheen was het een code schrijven net als hierboven, in excel vba, ..
  zondag 20 december 2009 @ 15:05:45 #18
67978 HenryHill
Fake it 'till you make it
pi_75838351
quote:
Op zondag 20 december 2009 15:03 schreef adbeentjes het volgende:

[..]

Hier loop ik vast, ik weet niet hoé. Voorheen was het een code schrijven net als hierboven, in excel vba, ..
Heb je in de vorige opdrachten wel eens cellen uit een Excel werkblad moeten lezen? Of pas je gewoon je programmacode aan als je met andere bedragen wilt werken?
So this is how liberty dies... with thunderous applause.
Truth? What's so great about the truth? Try lying for a change, it's the currency of the world
pi_75838416
quote:
Op zondag 20 december 2009 15:05 schreef HenryHill het volgende:

[..]

Heb je in de vorige opdrachten wel eens cellen uit een Excel werkblad moeten lezen? Of pas je gewoon je programmacode aan als je met andere bedragen wilt werken?
Altijd gewoon via "Marco opnemen" uiteindelijk kan je dan als het ware zelf de 'code' achterhalen via VBA.

Ik heb nu een kolom
A1: te betalen

A2: klant geeft

Kan ik ook dit probleem oplossen via "Macro opnemen"?
  zondag 20 december 2009 @ 15:10:42 #20
67978 HenryHill
Fake it 'till you make it
pi_75838563
quote:
Op zondag 20 december 2009 15:07 schreef adbeentjes het volgende:

[..]

Altijd gewoon via "Marco opnemen" uiteindelijk kan je dan als het ware zelf de 'code' achterhalen via VBA.
Ok, maar werd de invoer (in dit geval de bedragen) voor de vorige opdrachten ingelezen vanuit een werkblad, of werd de invoer ook in code gespecificeerd?
quote:
Ik heb nu een kolom
A1: te betalen

A2: klant geeft

Kan ik ook dit probleem oplossen via "Macro opnemen"?
Ja hoor, doe maar zoals je 't gewend bent
So this is how liberty dies... with thunderous applause.
Truth? What's so great about the truth? Try lying for a change, it's the currency of the world
pi_75838681
quote:
Op zondag 20 december 2009 15:10 schreef HenryHill het volgende:

[..]

Ok, maar werd de invoer (in dit geval de bedragen) voor de vorige opdrachten ingelezen vanuit een werkblad, of werd de invoer ook in code gespecificeerd?
[..]

Ja hoor, doe maar zoals je 't gewend bent

Geen idee hoe dus... dit is een 'apart' geval, opdrachten komen ook van een apart stencil. Ik heb gewoon de code voor VBA nodig, dus dat er ook schermpje verschijnt van"U betaalt, en u geeft" etc. Alleen weet ik niet hoe ik dat voor mekaar krijg, of iemand me daarbij wilt helpen. Het probleem zelf snap ik wel.
  zondag 20 december 2009 @ 15:16:09 #22
67978 HenryHill
Fake it 'till you make it
pi_75838823
quote:
Op zondag 20 december 2009 15:12 schreef adbeentjes het volgende:

[..]

Geen idee hoe dus... dit is een 'apart' geval, opdrachten komen ook van een apart stencil. Ik heb gewoon de code voor VBA nodig, dus dat er ook schermpje verschijnt van"U betaalt, en u geeft" etc. Alleen weet ik niet hoe ik dat voor mekaar krijg, of iemand me daarbij wilt helpen. Het probleem zelf snap ik wel.
In welke versie van Excel werk je? (2003 of 2007, Nederlands of Engels?)
So this is how liberty dies... with thunderous applause.
Truth? What's so great about the truth? Try lying for a change, it's the currency of the world
pi_75838884
quote:
Op zondag 20 december 2009 15:16 schreef HenryHill het volgende:

[..]

In welke versie van Excel werk je? (2003 of 2007, Nederlands of Engels?)
Ik gebruik voor VBA 2003 (ivm uitleg boek), heb ook 2007.

Beide NL.
  zondag 20 december 2009 @ 15:23:19 #24
67978 HenryHill
Fake it 'till you make it
pi_75839097
Ik heb zelf alleen 2007 tot m'n beschikking, dus het is misschien het handigst als je deze gebruikt.

Probeer eens het volgende:
1. Ga naar het lint "Ontwikkelaars". Als je deze niet ziet, zoek dan in de Help (F1) het onderwerp "Macro's maken met Microsoft Visual Basic" en volg de daar omschreven stappen om VBA beschikbaar te maken.

2. Op het lint Ontwikkelaars, klik op "Invoegen" (binnen het onderdeel Besturingselementen) en selecteer de knop (linksboven).

3. Door met de muis te slepen, bepaal de plaats en afmeting van de knop. Op het moment dat je de muisknop loslaat, krijg je het scherm "Macro toewijzen aan object" te zien. Vul als macronaam "BepaalBedrag" in, en druk op de knop Nieuw. Je komt nu in de VBA editor terecht, in de subroutine BepaalBedrag:

1
2
3
Sub BepaalBedrag()

End Sub
So this is how liberty dies... with thunderous applause.
Truth? What's so great about the truth? Try lying for a change, it's the currency of the world
pi_75839240
quote:
Op zondag 20 december 2009 15:23 schreef HenryHill het volgende:
Ik heb zelf alleen 2007 tot m'n beschikking, dus het is misschien het handigst als je deze gebruikt.

Probeer eens het volgende:
1. Ga naar het lint "Ontwikkelaars". Als je deze niet ziet, zoek dan in de Help (F1) het onderwerp "Macro's maken met Microsoft Visual Basic" en volg de daar omschreven stappen om VBA beschikbaar te maken.

2. Op het lint Ontwikkelaars, klik op "Invoegen" (binnen het onderdeel Besturingselementen) en selecteer de knop (linksboven). <wordt vervolgd>
Tot hier GELUKT!, Doe nu ook in 2007. Ik kan nu een blokje, knopje 'tekenen', nietwaar>?
abonnement Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')