查看文章 |
2.对象处理常用语句 要使用VBA有效地处理Excel对象模型,则需要经常使用With…End With语句和For Each…Next语句,它们可以简化对对象和集合的处理。 (1)With … End With语句 With … End With语句可以对某个对象执行一系列的操作,而不必重复指出该对象的名称。其语法为: With <对象> [语句代码] End With 其中:<对象>表示With语句要执行操作的具体对象,[语句代码]为对某对象执行操作的一条或多条语句,前面以点运算符开头。 考虑下面的程序,该程序对当前工作簿中的工作表Sheet1上的单元格区域A1:F20进行操作,设置该区域的字体样式、字体大小、下划线、以及字体颜色等属性。 Sub 格式A() Worksheets(“Sheet1”).Range("A1:F20").Font.Name = "Arial" Worksheets(“Sheet1”).Range("A1:F20").Font.FontStyle = "Bold Italic" Worksheets(“Sheet1”).Range("A1:F20").Font.Size = 10 Worksheets(“Sheet1”).Range("A1:F20").Font.Underline = xlUnderlineStyleSingle Worksheets(“Sheet1”).Range("A1:F F20").Font.ColorIndex = 3 End Sub 该过程可以使用With…End With语句来重新编写,如下面的程序执行与上面程序完全一样的操作: Sub 格式B() With Worksheets(“Sheet1”).Range("A1: F20").Font .Name = "Arial" .FontStyle = "Bold Italic" .Size = 10 .Underline = xlUnderlineStyleSingle .ColorIndex = 3 End With End Sub 使用With语句,不仅能避免您反复输入相同的代码,使您的程序代码更简洁,也能使程序运行得更快。
(2)For Each … Next 语句 For Each…Next语句遍历集合或数组中的每个元素,重复执行语句中的代码。其语法为: For Each <元素> In <集合/数组> [语句代码] [Exit For] [语句代码] Next [元素] 其中,<元素>为必需的参数,表示用来遍历集合或数组中所有元素的变量;<集合/数组>表示对象的集合或数组的名称;[语句代码]为可选参数,为对集合或数组中每一元素执行操作的代码;[Exit For]语句为中途退出循环;Next后的[元素]可省略。 当集合或数组中至少存在一个元素时,应会进入For Each…Next语句。首先针对集合或数组中的第一个元素执行For Each…Next语句中的代码,然后针对第二个元素执行语句代码,当集合或数组中的所有元素都执行完毕后,便会退出循环。如果在循环中的语句代码放置Exit For语句,执行到此语句时,便会退出循环;Exit For语句通常放在条件判断语句中。 可以将一个For Each…Next语句放在另一个For Each…Next语句中组成嵌套的循环。在每个For Each…Next语句中的<元素>变量应该不同。 下面的程序显示当前工作簿中所有工作表的名字,用MsgBox函数显示。如果当前工作簿中有3个工作表,则循环3次,相应地3次调用MsgBox函数。 Sub 工作表名称() Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets MsgBox ws.Name Next ws End Sub 下面的程序需要选在工作表中选择某单元格区域后,再运行代码。程序将在所选单元格区域单元格中循环,并将每个单元格的值使用VBA的UCase函数转换成大写字母。 Sub 转换为大写字母() Dim Cell As Range For Each Cell In Selection Cell.Value = UCase(Cell.Value) Next Cell End Sub
3、控制程序流程语句 (1) GoTo语句 该语句将执行的程序转到指定的标签所在的语句指令,但不能转移到过程之外的指令。例如,在进行错误捕捉时,发生错误后,程序转移至标签所在处执行。 (2) Select Case语句 当需要作出三种或三种以上的条件判断时,最后使用Select Case语句。其基本语法为: Select Case <测试表达式> [Case 条件表达式1] [指令] [Case 条件表达式2] [指令] …… [Case Else] [指令] End Select 当某个条件表达式与测试表达式相匹配时,则执行其后的指令,否则执行Else(如果有的话)后的指令,然后结束Select Case块的执行。 (3)错误转移语句 忽略所有的错误: ON ERROR RESUME NEXT 遇错跳转: on error goto err_handle '中间的其他代码 err_handle: ' 标签 '跳转后的代码 4.函数的使用 Function 过程是一系列由 Function 和 End Function 语句所包含起来的语句。Function 过程和 Sub 过程很类似,但函数可以返回一个值。Function 过程可经由调用者过程通过传递参数,例如常数、变量、或是表达式等来调用它。如果一个 Function 过程没有参数,它的 Function 语句必须包含一个空的圆括号。函数会在过程的一个或多个语句中指定一个值给函数名称来返回值。 从其他过程调用一个 Sub 过程时,必须键入过程名称以及任何需要的参数值。而 Call 语句并不需要,不过若使用它,则任何参数必须以括号括起来。
|