下面我们将看一下Excel VBA中的一个程序,该程序将大量的钱分成钞票和硬币。
情况:
创建一个工作表更改事件。当您更改工作表上的单元格时,Excel VBA将执行添加到工作表更改事件中的代码。
1.打开Visual Basic编辑器。
2.在项目浏览器中双击Sheet1(Sheet1)。
3.从左侧下拉列表中选择“工作表”。从右边的下拉列表中选择更改。
将以下代码行添加到工作表更改事件:
4.声明一个名为Double类型的数量的变量和一个整数类型的变量i。
5.工作表更改事件侦听Sheet1上的所有更改。如果单元格B2中发生某些更改,我们只希望Excel VBA可以执行某些操作。为此,请添加以下代码行:
6.我们用单元格B2的值初始化变量。
7.我们用频率清空范围。
8.现在该分割输入的金额了。我们开始一个For Next循环。
9.我们将利用Do While循环结构。只要Do While之后的部分为真,就会重复放置在这些单词之间的代码。只要数量大于或等于Cells(i,1).value,我们希望Excel VBA在步骤10重复代码行。
循环
10.将以下代码行添加到Do While循环中。
数量=数量-单元格(i,1)。值
说明:只要金额大于或等于Cells(i,1).value,该金额便包含该值的钞票/硬币。如此一来,Excel VBA会增加此帐单/硬币的频率(第一行),并从金额(第二行)减去该帐单/硬币的值。重复此过程,直到数量小于Cells(i,1).value。接下来,Excel VBA使i递增,并转到下一个帐单/硬币,以查看此帐单/硬币适合剩余数量的次数。这样一来,钱款将被拆分为钞票和硬币,直到没有钱可拆分为止。
11.关闭For Next循环,不要忘记关闭if语句(都在Do While循环之外)。
结束 ,如果
12.测试程序。
结果:
注意:当然,输入的金额不一定包含所有账单/硬币。如果金额中不包含某个特定的账单/硬币,则“完成时间”之后的部分永远不会变为该账单/硬币,而Excel VBA将直接转到下一个账单/硬币。