abonnement Unibet Coolblue Bitvavo
  zondag 20 december 2009 @ 15:27:24 #26
67978 HenryHill
Fake it 'till you make it
pi_75839263
quote:
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>?
Correct, zie boven
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_75839357
quote:
Op zondag 20 december 2009 15:27 schreef HenryHill het volgende:

[..]

Correct, zie boven
Gelukt, tot laatste stap,

Sub BepaalBedrag()

End Sub

  zondag 20 december 2009 @ 15:31:28 #28
67978 HenryHill
Fake it 'till you make it
pi_75839394
Ok, vul nu als code het volgende in, gewoon om het geheel even te testen:

1
2
3
4
5
6
7
8
9
Sub BepaalBedrag()
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


Probeer deze subroutine uit door twee getallen in de cellen A1 en A2 te zetten, en op de knop te drukken. De som moet dan in cel A3 weggeschreven worden. Werkt dit?
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_75839476
Het volgende:

30 bij A1 ingevuld
20 Bij A2 ingevuld
> Knop drukken
50 verschijnt in A3
pi_75839537
Volgende keer dit soort vragen in: [EXCEL] Het grote Excel vragen topic, #17

Dit is em dacht ik, zelf nog even naar wens finetunen.

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
Sub wisselgeld()

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
Supra Groningam Nihil
Postjubilea: 10.000 15.000 20.000 25.000
Sit jou kop in die koei se kont en wag tot die bul jou kom holnaai
Wat niemand je vertelt over de bioindustrie, geen bloed maar feiten
pi_75839644
@Ditch:

Daar snap ik al helemaal niets van, bovendien veeeeeeeels te lang. Ik wil het begrijpen...
  zondag 20 december 2009 @ 15:38:29 #32
67978 HenryHill
Fake it 'till you make it
pi_75839671
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
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.
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_75840020
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.
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
  zondag 20 december 2009 @ 15:48:50 #34
67978 HenryHill
Fake it 'till you make it
pi_75840120
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
Ok, prima, dan houd ik dezelfde coupures aan als jij.
Gooi de inhoud van BepaalBedrag maar weg, en gebruik de volgende code (zelf aanvullen!)
1
2
3
4
5
Dim bedragTeBetalen, bedragGegeven, bedragRetour As Double

Rem 1. Lees de 2 invoervelden en bepaal het bedrag retour
bedragTeBetalen = Range("B1").Value
Rem ...?
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_75840372
1
2
3
4
5 Dim bedragTeBetalen, bedragGegeven, bedragRetour As Double

Rem 1. Lees de 2 invoervelden en bepaal het bedrag retour
bedragTeBetalen = Range("B1").Value
Rem ...?


wat zijn de REM voor instructies, soort formules?

misschien klopt dit:

Rem...?

Rem 2. bedragGegeven ---> zie cel B2

Rem 3. bedragRetour = bedragGegeven - bedragTeBetalen

... zoiets?
  zondag 20 december 2009 @ 15:59:55 #36
67978 HenryHill
Fake it 'till you make it
pi_75840593
quote:
Op zondag 20 december 2009 15:54 schreef adbeentjes het volgende:
wat zijn de REM voor instructies, soort formules?
"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 bent
quote:
misschien klopt dit:

Rem 2. bedragGegeven ---> zie cel B2
Rem 3. bedragRetour = bedragGegeven - bedragTeBetalen
... zoiets?
Je moet de REM's alleen gebruiken bij commentaarregels, niet bij je code.
Enne, " ---> zie cel B2": als je kijkt naar die ene regel die ik je cadeau heb gedaan, dan zie je hoe het moet

Je derde regel is trouwens correct.
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_75840852
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


???? Weet niet of alles precies getikt is zoals Excel het wilt. ????
  zondag 20 december 2009 @ 16:12:10 #38
67978 HenryHill
Fake it 'till you make it
pi_75841036
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
Ja, je moet alleen nog die "Rem 3." weghalen, dan klopt het.
quote:
???? Weet niet of alles precies getikt is zoals Excel het wilt. ????
Als je het fout doet, dan krijg je het meteen te horen van excel hoor.

Ok, plak nu onderstaande code er maar bij (onder de regels die je nu hebt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Rem Loop nu over alle beschikbare coupures heen...
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


Als het goed is, krijg je nu 15 nullen onder elkaar als je de knop indrukt.
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_75841184
Nee,

Krijg een foutmelding.

heb tot nu toe:


Dim bedragTeBetalen, bedragGegeven, bedragRetour As Double

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
bedragRetour = bedragGegeven - bedragTeBetalen

Rem Loop nu over alle beschikbare coupures heen...
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


COMPILEERFOUT, B1
  zondag 20 december 2009 @ 16:32:58 #40
67978 HenryHill
Fake it 'till you make it
pi_75841760
quote:
Op zondag 20 december 2009 16:16 schreef adbeentjes het volgende:
Nee,

Krijg een foutmelding.

heb tot nu toe:
(...)
COMPILEERFOUT, B1
Hmm, vreemd, ik heb net jouw tekst in mijn ding geplakt en dan werkt het.

Voor de zekerheid: je hebt dit tussen
1
2
3
Sub BepaalBedrag()

End Sub

staan?
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_75841813
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?

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
  zondag 20 december 2009 @ 16:36:49 #42
67978 HenryHill
Fake it 'till you make it
pi_75841899
quote:
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
Ah, gelukkig maar

Snap je ook wat de code doet, of zijn er dingen tot nu toe niet helemaal duidelijk?
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_75842005
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?
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.
  zondag 20 december 2009 @ 16:42:39 #44
67978 HenryHill
Fake it 'till you make it
pi_75842098
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.
Precies.

Maar heb je bijvoorbeeld de constructie "For index = 1 to 15" / "Next" wel eens gezien?

En snap je wat er gebeurt bij "D" & coupureIndex ?
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_75842412
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.
  zondag 20 december 2009 @ 16:56:07 #46
67978 HenryHill
Fake it 'till you make it
pi_75842670
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.
Vooruit dan maar, 't is ook al een heel middagvullend programma geworden ;)

Op de plek waar "Rem (Logica komt hier)." staat, plaats de volgende code:
1
2
3
4
5
6
7
8
    Rem Bepaal het maximaal aantal coupures dat we kunnen uitgeven zonder bedragRetour te overschrijden.
    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)

N.B. Die "while" / "wend" constructie is een mogelijke oplossing. Een andere manier om op het maximum aantal coupures te komen is om het overgebleven bedrag te delen door de grootte van de coupure, en het resultaat naar beneden af te ronden.

Probeer het eens uit, zou ik zeggen.
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_75842823
Heb tot nu toe, zie hieronder, alleen doet 'ie het nog niet'.

Sub BepaalBedrag()


Dim bedragTeBetalen, bedragGegeven, bedragRetour As Double

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
bedragRetour = bedragGegeven - bedragTeBetalen

Rem Loop nu over alle beschikbare coupures heen...
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 Bepaal het maximaal aantal coupures dat we kunnen uitgeven zonder bedragRetour te overschrijden.
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)

coupureAantal = 0

Rem Schrijf het resultaat weg
Range("E" & coupureIndex).Value = coupureAantal
Next


End Sub
  zondag 20 december 2009 @ 17:02:35 #48
67978 HenryHill
Fake it 'till you make it
pi_75842925
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
Lol, je moet de vetgedrukte regel weghalen. Anders is het logisch dat 'ie elke keer '0' wegschrijft...
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_75843079
ff testen
pi_75843200
HOEZEE! HIJ WERKT!

HenryHill --------> Super!Bedankt!

abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')