Сметки и монети в Excel VBA - Лесни Excel макроси

Съдържание

По -долу ще разгледаме програма в Excel VBA което разделя сума пари на банкноти и монети.

Ситуация:

Създайте събитие за смяна на работен лист. Кодът, добавен към събитието за смяна на работния лист, ще бъде изпълнен от Excel VBA, когато промените клетка на работен лист.

1. Отворете редактора на Visual Basic.

2. Щракнете двукратно върху Sheet1 (Sheet1) в Project Explorer.

3. Изберете Работен лист от левия падащ списък. Изберете Промяна от десния падащ списък.

Добавете следните кодови редове към събитието за смяна на работния лист:

4. Обявете променлива, наречена количество от тип Double и променлива i от тип Integer.

Dim size As Double, i As Integer

5. Събитието за смяна на работния лист изслушва всички промени на Sheet1. Искаме Excel VBA да направи нещо само ако нещо се промени в клетка В2. За да постигнете това, добавете следния код:

Ако Target.Address = "$ B $ 2" Тогава

6. Инициализираме променливата сума със стойността на клетка В2.

 сума = Обхват ("B2"). Стойност

7. Изпразваме диапазона с честотите.

Диапазон ("B5: B16"). Стойност = ""

8. Сега е време да разделите въведената сума пари. Стартираме цикъл For Next.

За i = 5 до 16

9. Ще използваме структурата Do While Loop. Кодът, поставен между тези думи, ще се повтаря, докато частта след Do While е истина. Искаме Excel VBA да повтаря кодовите редове на стъпка 10, стига количеството да е по -голямо или равно на Cells (i, 1) .value.

Do While количество> = Клетки (i, 1)
Цикъл

10. Добавете следните кодови редове към цикъла Do While.

Клетки (i, 2). Стойност = клетки (i, 2). Стойност + 1
количество = количество - Клетки (i, 1). Стойност

Обяснение: докато сумата е по -голяма или равна на клетки (i, 1). Стойността, сумата съдържа банкноти/монети на тази стойност. В резултат на това Excel VBA увеличава честотата на тази сметка/монета (първи ред) и изважда стойността на сметката/монетата от сумата (втори ред). Този процес ще се повтаря, докато количеството стане по -малко от клетките (i, 1). След това Excel VBA увеличава i и отива до следващата сметка/монета, за да види колко пъти тази сметка/монета се вписва в оставащата сума. По този начин сумата ще бъде разделена на банкноти и монети, докато вече не останат пари за разделяне.

11. Затворете цикъла For Next и не забравяйте да затворите оператора if (и двете извън цикъла Do While).

 Следва i
Край, ако

12. Тествайте програмата.

Резултат:

Забележка: разбира се, че въведената сума не съдържа непременно всяка сметка/монета. Ако сумата не съдържа определена банкнота/монета, частта след Do While никога не става вярна за тази сметка/монета и Excel VBA преминава директно към следващата банкнота/монета.

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave