Correct, zie bovenquote:Op zondag 20 december 2009 15:26 schreef adbeentjes het volgende:
[..]
Tot hier GELUKT!, Doe nu ook in 2007. Ik kan nu een blokje, knopje 'tekenen', nietwaar>?
| 1 2 3 4 5 6 7 8 9 | Rem Lees de waarden uit A1 en A2. Dim i1, i2 As Integer i1 = Range("A1") i2 = Range("A2") Rem Tel deze waardes bij elkaar op, en ken het resultaat toe aan cel A3 Range("A3").Value = i1 + i2 End Sub |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | Dim check, pay, diff As Double Dim change As String check = Range("B1").Value pay = Range("B2").Value diff = pay - check MsgBox diff no500 = (diff - (diff Mod 500)) / 500 diff = diff - no500 * 500 If diff Mod 500 = 0 Then GoTo melding no200 = (diff - (diff Mod 200)) / 200 diff = diff - no200 * 200 If diff Mod 200 = 0 Then GoTo melding no100 = (diff - (diff Mod 100)) / 100 diff = diff - no100 * 100 If diff Mod 100 = 0 Then GoTo melding no50 = (diff - (diff Mod 50)) / 50 diff = diff - no50 * 50 If diff Mod 50 = 0 Then GoTo melding no20 = (diff - (diff Mod 20)) / 20 diff = diff - no20 * 20 If diff Mod 20 = 0 Then GoTo melding no10 = (diff - (diff Mod 10)) / 10 diff = diff - no10 * 10 If diff Mod 10 = 0 Then GoTo melding no5 = (diff - (diff Mod 5)) / 5 diff = diff - no5 * 5 If diff Mod 5 = 0 Then GoTo melding no2 = (diff - (diff Mod 2)) / 2 diff = diff - no2 * 2 If diff Mod 2 = 0 Then GoTo melding no1 = (diff - (diff Mod 1)) / 1 diff = diff - no1 * 1 If diff Mod 1 = 0 Then GoTo melding no050 = (diff - (diff Mod 0.5)) / 0.5 diff = diff - no050 * 0.5 If diff Mod 0.5 = 0 Then GoTo melding no020 = (diff - (diff Mod 0.2)) / 0.2 diff = diff - no020 * 0.2 If diff Mod 0.2 = 0 Then GoTo melding no010 = (diff - (diff Mod 0.1)) / 0.1 diff = diff - no010 * 0.1 If diff Mod 0.1 = 0 Then GoTo melding no005 = (diff - (diff Mod 0.05)) / 0.05 diff = diff - no005 * 0.05 If diff Mod 0.05 = 0 Then GoTo melding no002 = (diff - (diff Mod 0.02)) / 0.02 diff = diff - no002 * 0.02 If diff Mod 0.02 = 0 Then GoTo melding no001 = (diff - (diff Mod 0.01)) / 0.01 diff = diff - no001 * 0.01 melding: MsgBox no500 & " " & no200 & " " & no100 & " " & no50 & " " & no20 & " " & no10 & " " & no5 & " " & no2 & " " & no1 & " " & no050 & " " & no020 & " " & no010 & " " & no005 & " " & no002 & " " & no001 End Sub |
Very nice. Dan gaan we nu het werkblad opzetten voor de opdracht. Ik stel voor:quote:Op zondag 20 december 2009 15:33 schreef adbeentjes het volgende:
Het volgende:
30 bij A1 ingevuld
20 Bij A2 ingevuld
> Knop drukken
50 verschijnt in A3
Done;quote:Op zondag 20 december 2009 15:38 schreef HenryHill het volgende:
[..]
Very nice. Dan gaan we nu het werkblad opzetten voor de opdracht. Ik stel voor:
A1 bevat de tekst "Te betalen"
B1 wordt gebruikt om het te betalen bedrag in te zetten
A2 bevat de tekst "Klant geeft"
B2 wordt gebruikt om het gegeven bedrag in te zetten
B3 bevat de knop die onze subroutine BepaalBedrag aanroept
De cellen D1 t/m D14 bevatten de waarden van de coupures (500, 200, ... 0,01). De cellen E1 t/m E14 gaan het resultaat bevatten van onze code, nl. de aantallen coupures die moeten worden teruggegeven.
Ok, prima, dan houd ik dezelfde coupures aan als jij.quote:Op zondag 20 december 2009 15:46 schreef adbeentjes het volgende:
[..]
Done;
Alleen heb ik 15 coupures:
500
200
100
50
20
10
5
2
1
0,5
0,2
0,1
0,05
0,02
0,01
| 1 2 3 4 5 | Rem 1. Lees de 2 invoervelden en bepaal het bedrag retour bedragTeBetalen = Range("B1").Value Rem ...? |
"Rem" is een afkorting van "Remark", een opmerking dus. Het vertelt de VBA interpreter dat hij de rest van de regel kan negeren. Het wordt gebruikt om in je code uit te leggen wat je aan het doen bentquote:Op zondag 20 december 2009 15:54 schreef adbeentjes het volgende:
wat zijn de REM voor instructies, soort formules?
Je moet de REM's alleen gebruiken bij commentaarregels, niet bij je code.quote:misschien klopt dit:
Rem 2. bedragGegeven ---> zie cel B2
Rem 3. bedragRetour = bedragGegeven - bedragTeBetalen
... zoiets?
Ja, je moet alleen nog die "Rem 3." weghalen, dan klopt het.quote:Op zondag 20 december 2009 16:07 schreef adbeentjes het volgende:
Zo dus:
Rem 1. Lees de 2 invoervelden en bepaal het bedrag retour.
bedragTeBetalen = Range("B1").Value
Rem 2. Lees getal wat ingevoerd is bij invoerveld KlantGeeft.
bedragGegeven = Range("B2").Value
Rem 3. bedragRetour = bedragGegeven - bedragTeBetalen
Als je het fout doet, dan krijg je het meteen te horen van excel hoor.quote:???? Weet niet of alles precies getikt is zoals Excel het wilt. ????
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Dim coupureIndex, coupureAantal As Integer Dim coupure As Double For coupureIndex = 1 To 15 Rem Lees het bedrag voor deze coupure in coupure = Range("D" & coupureIndex).Value Rem (Logica moet hierzo komen). coupureAantal = 0 Rem Schrijf het resultaat weg Range("E" & coupureIndex).Value = coupureAantal Next |
Hmm, vreemd, ik heb net jouw tekst in mijn ding geplakt en dan werkt het.quote:Op zondag 20 december 2009 16:16 schreef adbeentjes het volgende:
Nee,
Krijg een foutmelding.
heb tot nu toe:
(...)
COMPILEERFOUT, B1
| 1 2 3 | End Sub |
quote:Op zondag 20 december 2009 16:32 schreef HenryHill het volgende:
[..]
Hmm, vreemd, ik heb net jouw tekst in mijn ding geplakt en dan werkt het.
Voor de zekerheid: je hebt dit tussen
[ code verwijderd ]
staan?
Ah, gelukkig maarquote:Op zondag 20 december 2009 16:34 schreef adbeentjes het volgende:
[..]
Dat had ik dus niet, dacht dat alles weg moest, nu heb ik het er wel bij staan, en hij doet het: er verschijnen allemaal 0-en
Ik snap wel zo'n beetje wat de code doet. Uiteindleijk moet er een waarde staan ipv de 0 (of weer 0) als uitgerekend is hoeveel de klant terug moet krijgen, zoals het voorbeeld.quote:Op zondag 20 december 2009 16:36 schreef HenryHill het volgende:
[..]
Ah, gelukkig maar
Snap je ook wat de code doet, of zijn er dingen tot nu toe niet helemaal duidelijk?
Precies.quote:Op zondag 20 december 2009 16:39 schreef adbeentjes het volgende:
[..]
Ik snap wel zo'n beetje wat de code doet. Uiteindleijk moet er een waarde staan ipv de 0 (of weer 0) als uitgerekend is hoeveel de klant terug moet krijgen, zoals het voorbeeld.
Vooruit dan maar, 't is ook al een heel middagvullend programma geworden ;)quote:Op zondag 20 december 2009 16:50 schreef adbeentjes het volgende:
Snap niet alle functies,
Ik weet wel dat we nog het een en ander moeten toevoegen, als ik bijv.
Te betalen: 120
Klant geeft: 200
invul, en daarna op de knop druk, gebeurt er nog niets, blijven nullen staan, het verschil moet nu dus berekend worden, en dan nog verdelen onder de cor.
| 1 2 3 4 5 6 7 8 | coupureAantal = 0 While ((coupureAantal + 1) * coupure) <= bedragRetour coupureAantal = coupureAantal + 1 Wend Rem Trek het bedrag wat dit aantal coupures voorstelt af van het bedrag dat we nog uit moeten keren. bedragRetour = bedragRetour - (coupureAantal * coupure) |
Lol, je moet de vetgedrukte regel weghalen. Anders is het logisch dat 'ie elke keer '0' wegschrijft...quote:Op zondag 20 december 2009 17:00 schreef adbeentjes het volgende:
Rem Trek het bedrag wat dit aantal coupures voorstelt af van het bedrag dat we nog uit moeten keren.
bedragRetour = bedragRetour - (coupureAantal * coupure)
coupureAantal = 0
Rem Schrijf het resultaat weg
Range("E" & coupureIndex).Value = coupureAantal
Next
End Sub
|
|
| Forum Opties | |
|---|---|
| Forumhop: | |
| Hop naar: | |