Rekeningen en munten in Excel VBA - Eenvoudige Excel-macro's

Inhoudsopgave

Hieronder zullen we kijken naar een programma in Excel VBA dat een geldbedrag opsplitst in biljetten en munten.

Situatie:

Maak een werkbladwijzigingsgebeurtenis. Code die is toegevoegd aan de werkbladwijzigingsgebeurtenis, wordt uitgevoerd door Excel VBA wanneer u een cel op een werkblad wijzigt.

1. Open de Visual Basic-editor.

2. Dubbelklik op Blad1 (Blad1) in de Projectverkenner.

3. Kies Werkblad in de linker vervolgkeuzelijst. Kies Wijzigen in de rechter vervolgkeuzelijst.

Voeg de volgende coderegels toe aan de werkbladwijzigingsgebeurtenis:

4. Declareer een variabele genaamd hoeveelheid van het type Double en een variabele i van het type Integer.

Dim bedrag als dubbel, i als geheel getal

5. De Worksheet Change Event luistert naar alle wijzigingen op Blad1. We willen alleen dat Excel VBA iets doet als er iets verandert in cel B2. Voeg hiervoor de volgende coderegel toe:

Als Target.Address = "$B$2" Dan

6. We initialiseren het variabele bedrag met de waarde van cel B2.

 bedrag = Bereik ("B2"). Waarde

7. We maken het bereik leeg met de frequenties.

Bereik ("B5:B16"). Waarde = ""

8. Nu is het tijd om het ingevoerde geldbedrag te splitsen. We starten een For Next-lus.

Voor i = 5 tot 16

9. We zullen gebruik maken van de Do While Loop-structuur. Code die tussen deze woorden wordt geplaatst, wordt herhaald zolang het gedeelte na Do While waar is. We willen dat Excel VBA de coderegels bij stap 10 herhaalt zolang het bedrag groter is dan of gelijk is aan Cells(i,1).value.

Do While-bedrag >= Cellen (i, 1). Waarde
Lus

10. Voeg de volgende coderegels toe aan de Do While Loop.

Cellen(i, 2).Waarde = Cellen(i, 2).Waarde + 1
bedrag = bedrag - Cellen (i, 1). Waarde

Uitleg: zolang het bedrag groter of gelijk is aan Cells(i,1).value, bevat het bedrag biljetten/munten van deze waarde. Als gevolg hiervan verhoogt Excel VBA de frequentie van deze rekening/munt (eerste regel) en trekt de waarde van de rekening/munt af van het bedrag (tweede regel). Dit proces wordt herhaald totdat de hoeveelheid kleiner wordt dan Cells(i,1).value. Vervolgens verhoogt Excel VBA i en gaat naar de volgende rekening/munt om te zien hoe vaak deze rekening/munt in het resterende bedrag past. Op deze manier wordt het geldbedrag opgesplitst in biljetten en munten totdat er geen geld meer over is om te splitsen.

11. Sluit de For Next-lus en vergeet niet het if-statement te sluiten (beide buiten de Do While Loop).

 volgende i
Stop als

12. Test het programma.

Resultaat:

Let op: het ingevulde bedrag bevat natuurlijk niet per se elk biljet/muntje. Als het bedrag een bepaalde rekening/munt niet bevat, wordt het gedeelte na Do While nooit waar voor deze rekening/munt en gaat Excel VBA direct naar de volgende rekening/munt.

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave