3.编写代码
(1)打开“学生成绩表”。
(2)按快捷键“Alt+F11”进入VBE环境。
(3)单击菜单―插入/模块‖命令向工程中插入一个模块,并编写以下代码: Sub 显示不及格学生() Dim i As Integer For i = 3 To 11
If Sheets(1).Cells(i, 2).Value < 60 Then Sheets(1).Cells(i, 2).Select Selection.Font.FontStyle = \加粗\ Selection.Font.ColorIndex = 3 End If Next End Sub
(4)关闭VBE开发环境返回Excel。
(5)在功能区“开发工具”选项卡的“控件”组中,单击“插入”按钮弹出“表单控件”面板,如图3-10所示。
图3-10 插入按钮
(6)在“表单控件”面板中单击“按钮”,拖动鼠标在工作表中绘制一个按钮。当松开鼠标时,将弹出“指定宏”对话框,如图3-11所示。
(7)在“指定宏”对话框中,单击选中“显示不及格学生”宏,单击“确定”按钮。 (8)右击工作表中的按钮,弹出快捷菜单如图3-12所示,单击“编辑文字”菜单,修改按钮中的提示文字为“显示不及格学生”。
图3-11 指定宏 图3-12 编辑文字
(9)单击“显示不及格学生”按钮,执行宏代码,成绩表中不及格成绩将突出显示为粗体、红色,如图3-13所示。
图3-13 执行程序
例021 从身份证号码中提取性别
1.案例说明
在很多信息系统中都需要使用到身份证号码,身份证号码中包含有很多信息,如可从其中提取性别。我国现行使用的身份证号码有两种编码规则,即15位居民身份证和18位居民身份证。
15位的身份证号的编码规则。 dddddd yymmdd xx p 18位的身份证号的编码规则。 dddddd yyyymmdd xx p y 其中:
— dddddd为地址码(省地县三级)18位中的和15位中的不完全相同。 — yyyymmdd yymmdd 为出生年月日。 — xx序号类编码。 — p性别。
— 18位中末尾的y为校验码。
2.关键技术
在If…Then语句中,条件不成立时不执行任何语句。在很多时候需要根据条件是否成立分别执行两段不同的代码,这时可用If…Then…Else语句,其语法格式如下:
If 逻辑表达式 Then 语句序列1 Else 语句序列2 End If
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 \性别:\+ sex End Sub
(3)切换到Excel环境,添加一个按钮―从身份证号码提取性别‖,并指定执行上步创建的宏。
(4)单击“从身份证号码提取性别”按钮,弹出如图3-15所示对话框。
(5)输入身份证号码后单击“确定”按钮,将在如图3-16所示对话框中显示性别。
图3-15 输入身份证号码 图3-16 显示性别
例022 评定成绩等级
1.案例说明
本例将成绩表中的百分制成绩按一定规则划分为A、B、C、D、E五个等级,如图3-17所示。
图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