VBA典型实例:368例 下载本文

t = Sheets(1).Cells(i, 2).Value '取得成绩 If t >= 90 Then j = \

ElseIf t >= 80 Then j = \

ElseIf t >= 70 Then j = \

ElseIf t >= 60 Then j = \ Else j = \ End If

Sheets(1).Cells(i, 3) = j Next End Sub

(4)返回Excel操作界面,在成绩表旁边增加一个按钮,并指定执行宏“评定等级”。 (5)单击“评定等级”按钮,即可在成绩表的C列显示出各成绩对应的等级,如图3-17所示。

例023 计算个人所得税

1.案例说明

在工资管理系统中,需要计算员工应缴纳的个人所得税。个人所得税税额按5%至45%的九级超额累进税率计算应缴税额,税率表如图3-19所示。

个人所得税的计算公式为:

应纳个人所得税税额=应纳税所得额×适用税率-速算扣除数

本例根据工资表中的相应数据计算出纳税额,并填充在工资表对应的列中。

图3-19 个人所得税税率表

2.关键技术

本例中计算个人所得税时共有九个分支。这时可在If…Then…ElseIf结构中添加多个ElseIf块来进行各分支的处理。对于多分支结构,可使用Select Case语句。Select Case语句的功能与If…Then…Else语句类似,但在多分支结构中,使用Select Case语句可使代码简洁易读。

Select Case结构的语法格式如下: Select Case 测试表达式 Case 表达式列表1 语句序列1 Case 表达式列表2 语句序列2 … … Case Else 语句序列n End Select

在以上结构中,首先计算出“测试表达式”的值,然后,VBA将表达式的值与结构中的每个Case的值进行比较。如果相等,就执行与该Case语句下面的语句块,执行完毕再跳转到End Select语句后执行。其流程图如图3-20所示。

图3-20 Select Case语句流程图

在Select Case结构中,“测试表达式”通常是一个数值型或字符型的变量。“表达式列表”可以是一个或几个值的列表。如果在一个列表中有多个值,需要用逗号将各值分隔开。表达式列表可以按以下几种情况进行书写:

— 表达式:表示一些具体的取值。例如:Case 10,15,25。

— 表达式A To 表达式B:表示一个数据范围。例如,Case 7 To 17表示7~17之间的值。

— Is 比较运算符表达式:表示一个范围。例如,Case Is>60 表示所有大于90的值。 — 以上三种情况的混合。例如,Case 4 To 10, 15, Is>20。

3.编写代码

(1)在Excel中打开工资表工作簿。

(2)按快捷键“Alt+F11”进入VBE开发环境。 (3)单击菜单“插入/模块”命令插入一个模块。 (4)在模块中编写以下函数,用来计算所得税: Function 个人所得税(curP As Currency) Dim curT As Currency

curP = curP – 1600 '1600为扣除数 If curP > 0 Then Select Case curP Case Is <= 500

curT = curP * 0.05 Case Is <= 2000

curT = (curP - 500) * 0.1 + 25 Case Is <= 5000

curT = (curP - 2000) * 0.15 + 125 Case Is <= 20000

curT = (curP - 5000) * 0.2 + 375 Case Is <= 40000

curT = (curP - 20000) * 0.25 + 1375 Case Is < 60000

curT = (curP - 40000) * 0.3 + 3375 Case Is < 80000

curT = (curP - 60000) * 0.35 + 6375 Case Is < 100000

curT = (curP - 80000) * 0.4 + 10375 Case Else

curT = (curP - 100000) * 0.45 + 15375 End Select 个人所得税 = curT Else

个人所得税 = 0