Poniżej przyjrzymy się programowi w Excel VBA która dzieli kwotę pieniędzy na rachunki i monety.
Sytuacja:
Utwórz zdarzenie zmiany arkusza roboczego. Kod dodany do zdarzenia zmiany arkusza roboczego zostanie wykonany przez Excel VBA po zmianie komórki w arkuszu.
1. Otwórz Edytor Visual Basic.
2. Kliknij dwukrotnie Arkusz1 (Arkusz1) w Eksploratorze projektów.
3. Wybierz Arkusz roboczy z lewej listy rozwijanej. Wybierz Zmień z prawej listy rozwijanej.
Dodaj następujące wiersze kodu do zdarzenia zmiany arkusza roboczego:
4. Zadeklaruj zmienną o nazwie kwota typu Double oraz zmienną i typu Integer.
Ilość dim jako Double, i As Integer
5. Zdarzenie zmiany arkusza roboczego nasłuchuje wszystkich zmian w Arkuszu1. Chcemy, aby Excel VBA zrobił coś, jeśli coś zmieni się w komórce B2. Aby to osiągnąć, dodaj następującą linię kodu:
Jeśli Target.Address = "$B$2" Wtedy
6. Inicjujemy zmienną kwotę wartością komórki B2.
kwota = Zakres("B2").Wartość
7. Opróżniamy zakres częstotliwościami.
Zakres("B5:B16").Wartość = ""
8. Teraz nadszedł czas, aby podzielić wprowadzoną kwotę. Rozpoczynamy pętlę For Next.
Dla i = 5 do 16
9. Wykorzystamy strukturę Do While Loop. Kod umieszczony między tymi słowami będzie powtarzany, o ile część po Do While będzie prawdziwa. Chcemy, aby Excel VBA powtarzał linie kodu w kroku 10, o ile kwota jest większa lub równa Cells(i,1).value.
Do While ilość >= Cells(i, 1)).Value
Pętla
10. Dodaj następujące wiersze kodu do pętli Do While.
Komórki(i, 2).Wartość = Komórki(i, 2).Wartość + 1
ilość = ilość - Komórki(i, 1).Wartość
Wyjaśnienie: dopóki kwota jest większa lub równa Cells(i,1).value, kwota zawiera banknoty/monety o tej wartości. W rezultacie Excel VBA zwiększa częstotliwość tego banknotu/monety (pierwszy wiersz) i odejmuje wartość banknotu/monety od kwoty (drugi wiersz). Proces ten będzie powtarzany do momentu, gdy kwota będzie mniejsza niż Cells(i,1).value. Następnie Excel VBA zwiększa i i przechodzi do następnego banknotu / monety, aby zobaczyć, ile razy ten banknot / moneta mieści się w pozostałej kwocie. W ten sposób kwota pieniędzy zostanie podzielona na banknoty i monety, dopóki nie będzie już pieniędzy do podziału.
11. Zamknij pętlę For Next i nie zapomnij zamknąć instrukcji if (obie poza pętlą Do While).
Dalej ja
Zakończ, jeśli
12. Przetestuj program.
Wynik:
Uwaga: oczywiście wpisana kwota nie musi zawierać każdego banknotu/monety. Jeśli kwota nie zawiera określonego banknotu / monety, część po Do While nigdy nie staje się prawdziwa dla tego banknotu / monety, a Excel VBA przechodzi bezpośrednio do następnego banknotu / monety.