通过上一讲的学习,我们已初步掌握了如何利用VBA控制Excel。但都是利用宏记录器录制的VBA宏语句。在实际应用中,记录宏只能机械地重复执行某些操作,而不能完成其它更复杂的功能。这一讲将介绍如何编写超出记录宏以外的VBA程序,如何在编写宏时构造分支和循环,从而使编写出的宏功能更为强大。 一、VBA控制结构VBA是由Visual Basic语言发展而成的,其语言结构分为两部分:Visual Basic语言结构和其嵌入软件的对象模块(如Excel对象模块)。其中,Visual Basic是一套完全独立的Windows开发系统,是可视化的、面向对象的、采用事件驱动方式的结构化高级程序设计语言。与其它高级程序设计语言的控制结构一样,Visual Basic程序设计语言的控制结构分为三种:顺序结构、分支结构和循环结构。顺序结构:表示在每个过程或函数中程序依顺序执行每条语句,无条件判断转移和循环。原始记录宏的结构就属于顺序结构,既不能根据具体情况作出判断执行不同的操作,也不能对同一类问题自动地重复执行同一组操作。因而,要提高宏的灵活性,增加宏的功能,唯一办法就是修改宏,加入选择、判断、循环控制功能。 1. 分支结构VBA的分支结构有:If语句和Select Case语句。If 语句If语句是根据条件判断控制程序的分支,有三种形式:一是单分支结构,仅当条件为真时执行Then语句块;二是双分支结构,当条件为真时执行Then语句块,条件为假时执行Else语句块;三是多分支结构,格式如下:If 〈条件1〉 Then 〈语句块1〉 ElseIf 〈条件2〉 Then 〈语句块2〉 · · · Else 〈语句块n+1〉 End If 当条件1为真时执行语句块1,否则,若条件2为真,则执行语句块2……如果所有的条件都不成立,则执行Else后面的语句块n+1。 Sub Move( ) ‘在工作表的3~9列内右移单元指针 ‘快捷键 Ctrl+Shift+M If ActiveCell.Column < 3 Or ActiveCell.Column > 9 Then Cells(ActiveCell.Row, 3).Select ElseIf ActiveCell.Column = 9 Then Cells(ActiveCell.Row + 1, 3).Select Else ActiveCell.Offset(0, 1).Select End If End Sub Select Case语句Select Case语句与If...Then...ElseIf语句非常相似,只是当判断控制仅取决于一个测试变量时,使用Select Case结构更有效、更简捷。Select Case语句的格式如下: Select Case 〈测试变量〉 Case 〈表达式1〉 〈语句块1〉 Case 〈表达式2〉 〈语句块2〉 · · · Case Else 〈语句块n+1〉 End Select 该语句的功能是:首先将测试变量的值与Case后面表达式的值相比较,哪个表达式与测试变量匹配就转向执行哪段语句块,执行完毕便转向End Select语句之后继续往下执行。如果所有的条件都不成立,则执行Case Else后面的语句块n+1。 Sub Score( ) ‘给出优、良、中、及格、不及格五个等级。 ‘快捷键 Ctrl+Shift+S Select Case ActiveCell.Value Case Is < 60 Cells(ActiveCell.Row, ActiveCell.Column + 1) = "不及格" Case 60 To 69.9 Cells(ActiveCell.Row, ActiveCell.Column + 1) = "及格" Case 70 To 79.9 Cells(ActiveCell.Row, ActiveCell.Column + 1) = "中" Case 80 To 89.9 Cells(ActiveCell.Row, ActiveCell.Column + 1) = "良" Case Else Cells(ActiveCell.Row, ActiveCell.Column + 1) = "优" End Select End Sub |
|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )
GMT+8, 2024-5-28 01:23 , Processed in 0.084091 second(s), 16 queries .
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.