/ / Сметки и монети в Excel VBA

Сметки и монети в Excel VBA

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

Ситуация:

Сметки и монети в Excel VBA

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

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

2. Кликнете два пъти върху Sheet1 (Sheet1) в Project Explorer.

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

Работен лист Промяна събитие в Excel VBA

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

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

Dim amount As Double, i As Integer

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

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

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

amount = Range("B2").Value

7. Освобождаваме диапазона с честотите.

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

8. Сега е време да разделим вписаната сума пари. Започваме линия For Next.

For i = 5 To 16

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

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

Loop

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

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

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

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

   Next i
End if

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

Резултат:

Резултати от сметките и монетите

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

Също така се чете: