Nedenfor ser vi på et program i Excel VBA som deler en sum penger inn sedler og mynter.
Situasjon:
Lag en hendelsesendringshendelse. Koden som er lagt til i regnearksendringshendelsen, blir utført av Excel VBA når du endrer en celle i et regneark.
1. Åpne Visual Basic Editor.
2. Dobbeltklikk på Sheet1 (Sheet1) i Project Explorer.
3. Velg Regneark fra rullegardinlisten til venstre. Velg Endre fra rullegardinlisten til høyre.
Legg til følgende kodelinjer i regnearkendringshendelsen:
4. Angi en variabel som kalles mengde av type Double og en variabel i av type Heltall.
Dim sum As Double, i As Integer
5. Regnearksendringshendelsen lytter til alle endringene på Sheet1. Vi vil bare at Excel VBA skal gjøre noe hvis noe endres i celle B2. For å oppnå dette, legg til følgende kodelinje:
Hvis Target.Address = "$ B $ 2" Da
6. Vi initialiserer den variable mengden med verdien av celle B2.
beløp = Område ("B2"). Verdi
7. Vi tømmer området med frekvensene.
Område ("B5: B16"). Verdi = ""
8. Nå er det på tide å dele det angitte beløpet. Vi starter en For Next loop.
For i = 5 til 16
9. Vi vil gjøre bruk av Do While Loop -strukturen. Koden plassert mellom disse ordene vil gjentas så lenge delen etter Do While er sann. Vi vil at Excel VBA skal gjenta kodelinjene i trinn 10 så lenge beløpet er større eller lik Celler (i, 1) .verdi.
Gjør Mens -mengde> = Celler (i, 1). Verdi
Løkke
10. Legg til følgende kodelinjer i Do While Loop.
Celler (i, 2) .Value = Celler (i, 2) .Værdi + 1
beløp = beløp - Celler (i, 1). Verdi
Forklaring: så lenge beløpet er større eller lik Celler (i, 1). Verdi, inneholder beløpet sedler/mynter av denne verdien. Som et resultat øker Excel VBA frekvensen til denne sedlen/mynten (første linje) og trekker verdien av sedlen/mynten fra beløpet (andre linje). Denne prosessen vil gjentas til mengden blir mindre enn celler (i, 1). Verdi. Deretter øker Excel VBA i og går til neste seddel/mynt for å se hvor mange ganger denne sedlen/mynten passer i beløpet som er igjen. På denne måten blir mengden penger delt inn i sedler og mynter til det ikke er penger igjen å dele.
11. Lukk For Next -løkken og ikke glem å lukke if -setningen (begge utenfor Do While Loop).
Neste jeg
Slutt om
12. Test programmet.
Resultat:
Merk: Selvfølgelig inneholder det angitte beløpet ikke nødvendigvis alle sedler/mynter. Hvis beløpet ikke inneholder en bestemt seddel/mynt, blir delen etter Do While aldri sant for denne sedlen/mynten, og Excel VBA går direkte til neste seddel/mynt.