/ / Räkningar och mynt i Excel VBA

Räkningar och mynt i Excel VBA

Nedan ser vi på ett program i Excel VBA som delar upp en summa pengar i sedlar och mynt.

Situation:

Räkningar och mynt i Excel VBA

Skapa ett arbetsbladbyteshändelse. Kod som läggs till i arbetsbladets ändringshändelse kommer att köras av Excel VBA när du byter en cell i ett kalkylblad.

1. Öppna Visual Basic Editor.

2. Dubbelklicka på Sheet1 (Sheet1) i Project Explorer.

3. Välj Arbetsblad från den vänstra rullgardinsmenyn. Välj Ändra från den högra rullgardinsmenyn.

Arbetsblad Ändra händelse i Excel VBA

Lägg till följande kodlinjer till arbetsbladets ändringshändelse:

4. Förklara en variabel kallad mängd typ Dubbel och en variabel i av typen Integer.

Dim amount As Double, i As Integer

5. Arbetsbladbyteshändelsen lyssnar på alla ändringar på Sheet1. Vi vill bara att Excel VBA ska göra något om något ändras i cell B2. För att uppnå detta lägger du till följande kodrad:

If Target.Address = "$B$2" Then

6. Vi initierar det variabla beloppet med värdet av cell B2.

amount = Range("B2").Value

7. Vi tömmer intervallet med frekvenserna.

Range("B5:B16").Value = ""

8. Nu är det dags att dela in pengarna. Vi startar en For Next-loop.

For i = 5 To 16

9. Vi kommer att använda sig av Do While Loop-strukturen. Kod placerad mellan dessa ord kommer att upprepas så länge som delen efter Do While är sant. Vi vill att Excel VBA ska upprepa kodlinjerna i steg 10 så länge som beloppet är större eller lika med celler (i, 1) .värde.

Do While amount >= Cells(i, 1).Value

Loop

10. Lägg till följande kodlinjer till Do While Loop.

Cells(i, 2).Value = Cells(i, 2).Value + 1
amount = amount - Cells(i, 1).Value

Förklaring: så länge beloppet är större eller lika med celler (i, 1) .värde innehåller beloppet sedlar / mynt av detta värde. Som ett resultat ökar Excel VBA frekvensen av denna sedel / mynt (första raden) och subtraherar värdet av sedlar / mynt från belopp (andra raden). Denna process kommer att upprepas tills beloppet blir mindre än celler (i, 1) .värde. Därefter ökar Excel VBA i och går till nästa proposition / mynt för att se hur många gånger denna faktura / mynt passar i det belopp som kvarstår. På så sätt delas pengarna in i sedlar och mynt tills det inte finns några pengar kvar att dela upp längre.

11. Stäng förföljande slinga och glöm inte att stänga if-satsen (båda utanför Do While Loop).

   Next i
End if

12. Testa programmet.

Resultat:

Räkningar och myntresultat

Notera: Naturligtvis innehåller det inmatade beloppet inte nödvändigtvis alla sedlar / mynt. Om beloppet inte innehåller en viss faktura / del, blir delen efter Do While aldrig sant för denna faktura / mynt och Excel VBA går direkt till nästa sedel / mynt.

Läs också: