例解Excel VBA 联系客服

发布时间 : 星期四 文章例解Excel VBA更新完毕开始阅读031b8adff111f18582d05a8f

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