Nižšie sa pozrieme na program v Excel VBA do ktorého sa rozdelí množstvo peňazí bankovky a mince.
Situácia:
Vytvorte udalosť zmeny pracovného hárka. Kód pridaný do udalosti zmeny pracovného hárka vykoná Excel VBA, keď zmeníte bunku v hárku.
1. Otvorte editor jazyka Visual Basic.
2. Dvakrát kliknite na Sheet1 (Sheet1) v programe Project Explorer.
3. V ľavom rozbaľovacom zozname vyberte Pracovný list. V pravom rozbaľovacom zozname vyberte položku Zmeniť.
Do udalosti zmeny pracovného hárka pridajte nasledujúce riadky kódu:
4. Deklarujte premennú nazývanú množstvo typu Double a premennú i typu Integer.
Dim množstvo ako dvojnásobok, aj ako celé číslo
5. Udalosť zmeny pracovného hárka počúva všetky zmeny v hárku1. Chceme, aby Excel VBA niečo urobil, ak sa niečo zmení v bunke B2. Aby ste to dosiahli, pridajte nasledujúci riadok kódu:
Ak Target.Address = "$ B $ 2" Potom
6. Inicializujeme premennú sumu s hodnotou bunky B2.
množstvo = rozsah („B2“). Hodnota
7. Vyprázdňujeme rozsah s frekvenciami.
Rozsah ("B5: B16"). Hodnota = ""
8. Teraz je čas rozdeliť zadanú sumu peňazí. Začíname slučku For Next.
Pre i = 5 až 16
9. Využijeme štruktúru Do While Loop. Kód umiestnený medzi týmito slovami sa bude opakovať, pokiaľ bude časť po Do While pravdivá. Chceme, aby Excel VBA opakoval riadky kódu v kroku 10, pokiaľ je množstvo väčšie alebo sa rovná bunkám (i, 1) .hodnota.
Vykonajte množstvo> = Bunky (i, 1). Hodnota
Slučka
10. Pridajte nasledujúce riadky kódu do slučky Do While.
Bunky (i, 2). Hodnota = bunky (i, 2). Hodnota + 1
množstvo = množstvo - Bunky (i, 1). Hodnota
Vysvetlenie: pokiaľ je čiastka väčšia alebo sa rovná bunkám (i, 1). Hodnota, suma obsahuje bankovky/mince tejto hodnoty. Výsledkom je, že Excel VBA zvýši frekvenciu tejto zmenky/mince (prvý riadok) a od hodnoty (druhý riadok) odpočíta hodnotu bankovky/mince. Tento proces sa bude opakovať, kým sa množstvo nestane menším ako hodnota buniek (i, 1). Ďalej, Excel VBA zvýši i a prejde na ďalšiu bankovku/mincu, aby zistil, koľkokrát sa táto bankovka/minca zmestí do zostávajúcej sumy. Týmto spôsobom bude množstvo peňazí rozdelené na bankovky a mince, kým už nebudú žiadne peniaze na rozdelenie.
11. Zatvorte slučku For Next a nezabudnite uzavrieť príkaz if (obaja mimo slučky Do While).
Ďalej i
Koniec Ak
12. Otestujte program.
Výsledok:
Poznámka: zadaná suma samozrejme nemusí nevyhnutne obsahovať každú bankovku/mincu. Ak čiastka neobsahuje určitú bankovku/mincu, časť po Do While sa pri tejto bankovke/minci nikdy nestane pravdou a Excel VBA prejde priamo na ďalšiu bankovku/coin.