VBA判断―逻辑表达式‖的值,如果它为True,将执行―语句序列1‖中的各条语句,当―逻辑表达式‖的值为False时,就执行―语句序列2‖中的各条语句。其流程图如图3-14所示。
3.编写代码
(1)新建Excel工作簿,在VBE中插入一个模块。 (2)在模块中编写以下代码: Sub 根据身份证号码确定性别()
sid = InputBox(\请输入身份证号码:\
i = Len(sid)
If i <> 15 And i <> 18 Then '判断身份证号长度是否正确 MsgBox \身份证号码只能为15位或18位!\
Exit Sub
End If
If i = 15 Then '长度为15位 s = Right(sid, 1) '取最右侧的数字 Else '长度为18度
s = Mid(sid, 17, 1) '取倒数第2位数
End If
If Int(s / 2) = s / 2 Then '为偶数 sex = \女\
Else
sex = \男\
End If
MsgBox \性别:\
End Sub
(3)切换到Excel环境,添加一个按钮―从身份证号码提取性别‖,并指定执行上步创建的宏。
(4)单击―从身份证号码提取性别‖按钮,弹出如图3-15所示对话框。
(5)输入身份证号码后单击―确定‖按钮,将在如图3-16所示对话框中显示性别。
图3-15 输入身份证号码 图3-16 显示性别
例022 评定成绩等级
本例将成绩表中的百分制成绩按一定规则划分为A、B、C、D、E五个等级,如图3-17所示。
1.案例说明
图3-17 评定成绩等级
其中各等级对应的成绩分别为: — A:大于等于90分; — B:大于等于80分,小于90分; — C:大于等于70分,小于80分; — D:大于等于60分,小于70分; — E:小于60分。 2.关键技术
本例共有五个分支,使用If…Then…Else这种二路分支结构也可完成,但需要复杂 的嵌套结构才能解决该问题。其实VBA中提供了一种If…Then…ElseIf的多分支结构,其语法格式如下: If 逻辑表达式1 Then 语句序列1 ElseIf 逻辑表达式2 Then 语句序列2. ElseIf 逻辑表达式3 Then 语句序列3 ... … Else 语句序列n End If 在以上结构中,可以包括任意数量的ElseIf子句和条件,ElseIf子句总是出现在Else
子句之前。
VBA首先判断―逻辑表达式1‖的值。如果它为False,再判断―逻辑表达式2‖的值,
依此类推,当找到一个为True的条件,就会执行相应的语句块,然后执行End If
后面的代码。如果所有―逻辑表达式‖都为False,且包含Else语句块,则执行Else语句块。其流程图如图3-18所示。 图3-18 If…Then…ElseIf语句流程图
3.编写代码
(1)在Excel中打开成绩表。
(2)按快捷键―Alt+F11‖进入VBE开发环境。
(3)单击―插入/模块‖命令向工程中插入一个模块,并编写以下VBA代码: Sub 评定等级()
Dim i As Integer
For i = 3 To 11
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 计算个人所得税
在工资管理系统中,需要计算员工应缴纳的个人所得税。个人所得税税额按5%至45%的九级超额累进税率计算应缴税额,税率表如图3-19所示。 个人所得税的计算公式为:
应纳个人所得税税额=应纳税所得额×适用税率-速算扣除数
本例根据工资表中的相应数据计算出纳税额,并填充在工资表对应的列中。
1.案例说明
图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
相关推荐: