一、 循环结构
循环结构允许重复执行一行或数行代码。Visual Basic支持的循环结构有:Do...Loop;
For...Next;For Each...Next。
1. Do...Loop
用Do循环重复执行一语句块,且重复次数不定。Do...Loop 语句有几种演变形式,但每种都计算数值条件以决定是否继续执行。如同 If...Then一样条件必须是一个数值或者值为 True(非零)或 False(零)的表达式。在下面的Do...Loop循环中,只要condition为True就执行statements。
Do While condition
statements
Loop
当Visual Basic执行这个Do循环时会首先测试 condition。如果condition为False(零),则跳过所有语句。如果condition为True非零),则Visual Basic执行语句,然后退回到Do While语句再测试条件。
因此,只要condition为True或非零,循环可以随意执行多少次。如果condition一开始便为False,则不会执行语句。
Do...Loop语句的另一种演变形式是先执行语句,然后在每次执行后测试condition。这种形式保证statements至少执行一次:
Do
statements
Loop While condition
其他两种演变形式类似于前两个,所不同的是,只要condition为False而不是True,它们就执行循环。
2.For...Next
在不知道循环内需要执行多少次语句时,宜用 Do循环。但是,在知道要执行多少次时,则最好使用For...Next循环。与Do循环不同,For循环使用一个叫做计数器的变量,每重复一次循环之后,计数器变量的值就会增加或者减少。For循环的语法如下:
For counter = start To end [Step increment]
statements
Next [counter]
参数 Counter、start、end 和 increment 都是数值型的。
注意 :increment参数可正可负。如果increment为正,则start必须小于等于end,否则不能执行循环内的语句。如果increment为负,则start必须大于等于end,这样才能执行循环体。如果没有设置Step,则increment缺省值为1。
在执行For循环时,Visual Basic的执行过程如下。
(1)设置counter等于start。
(2)若increment为正,则测试counter是否大于end。若是的话,则Visual Basic退出循环。(若 increment为负,则Visual Basic测试counter是否小于end。)
(3)执行语句。
(4)counter增加1,或者增加 increment(如果已指定的话)。
(5)重复步骤(2)到步骤(4)。
以下代码打印出所有有效的屏幕字体名:
Private Sub Form_Click ()
Dim i As Integer
For i = 0 To Screen.FontCount
Print Screen.Fonts (i)
Next
End Sub
3.For Each...Next
For Each...Next 循环与 For...Next 循环类似,但它对数组或对象集合中的每一个元素重复一组语句,而不是重复语句一定的次数。如果不知道一个集合有多少元素,For Each...Next 循环非常有用。
For Each...Next 循环的语法如下:
For Each element In group
statements
Next element
例如,下面的子过程打开 Biblio.mdb,把每一个表的名字加到列表框中。
Sub ListTableDefs ()
Dim objDb As Database
Dim MyTableDef as TableDef
Set objDb = OpenDatabase("c:\vb\biblio.mdb", _True, False)
For Each MyTableDef In objDb.TableDefs ()
List1.AddItem
MyTableDef.Name
Next MyTableDef
End Sub
请记住使用 For Each...Next 时的几点限制:
(1)对集合,element只能是Variant变量,或一般的Object变量,或“对象浏览器”中列出的对象。
(2)对数组,element只能是Variant变量。
(3)For Each...Next不能与用户自定义类型的数组一起使用,因为Variant不可能包含用户自定义类型。
二、 使用控制结构
嵌套控制结构可以把控制结构放入另一个控制结构之内(例如在For...Next循环中的If...Then块)。一个控制结构内部包含另一个控制结构叫做 nest(嵌套)。在Visual Basic中,控制结构的嵌套层数没有限制。按一般习惯,为了使判定结构和循环结构更具可读性,总是用缩排方式书写判定结构或循环的正文部分。
例如,下面的过程要把打印机和屏幕共有的字体名全部打印出来:
Private Sub Form_Click ()
Dim SFont, PFont
For Each SFont In Screen.Fonts ()
For Each PFont In Printer.Fonts ()
If SFont = PFont Then
Print SFont
End If
Next PFont
Next SFont
End Sub
注意,第一个Next关闭了内层的For 循环,而最后一个Next关闭了外层的For循环。同样,在嵌套的If语句中,End If语句自动与最靠近的前一个If语句配对。嵌套的Do...Loop结构的工作方式也是一样的,最内圈的Loop语句与最内圈的Do语句匹配。
三、 退出控制结构
用Exit语句可以直接退出For循环、Do循环、子过程或函数过程。Exit语句的语法很简单:Exit For在For循环中出现的次数没有限制,Exit Do在Do 循环中出现的次数也没有限制。
For counter = start To end
[Step increment]
[statementblock]
[Exit For]
[statementblock]
Next [counter[, counter] [,...]]
Do [{While | Until} condition]
[statementblock]
[Exit Do]
[statementblock]
Loop
Exit Do语句可以在Do循环语法的所有版本中使用。
Exit For和Exit Do非常有用,因为它有时适于立即退出循环,而且不再执行循环中的任何进一步迭代或者语句。例如,在前面的打印屏幕和打印机共有字体的例子中,程序不断将打印机字体和给定的屏幕字体作比较,甚至在已经找到了一个相符的打印机字体后还在继续寻找。对这个函数有一个效率更高的改进版,在此,只要找到相匹配的字体后就立即退出循环:
Private Sub Form_Click ()
Dim SFont, PFont
For Each SFont In Screen.Fonts ()
For Each PFont In Printer.Fonts ()
If SFont = PFont Then
Print Sfont
Exit For '退出内圈循环。
End If
Next PFont
Next SFont
End Sub
正如此例所表明的,Exit语句几乎总是出现在 If语句或Select Case语句内部,而If语句或Select Case语句在循环内嵌套。
用Exit语句中断循环时,计数器变量的值会因退出循环的方式而不同:
(1)在完成循环时,计数器的值等于上限值加上步进值。
(2)在提前退出循环时,计数器变量保持其值,并遵从有关取值范围的一般规则。
(3)在集合之外迭代时,如果计数器变量为 Object类型,则其值为Nothing;如果计数器变量为 Variant类型,则其值为Empty。
四、 退出子过程或函数过程
也可从控制结构内部退出过程。Exit Sub和 Exit Function的语法和“退出控制结构”中的 Exit For和Exit Do相似。Exit Sub 可以出现在子过程主体内的任何地方,出现的次数随需要而定。
当过程已完成每个任务并可直接返回时,Exit Sub和Exit Function是非常有用的。例如,如果想改动前面的例子,使得对查找到的打印机和屏幕的共有字体,只打印其中的第一个,则可用Exit Sub,如下所示:
Private Sub Form_Click ()
Dim SFont, PFont
For Each SFont In Screen.Fonts ()
For Each PFont In Printer.Fonts ()
If SFont = PFont Then
Print Sfont
Exit Sub '退出过程。
End If
Next PFont
Next SFont
End Sub
小草网络工作室,2006年5月30日,经过删减
分享到:
相关推荐
在VBA中,控制结构是程序流程的关键部分,它决定了代码如何按顺序执行。本篇文章将详细讲解VBA中的三种主要循环结构:Do...Loop、For...Next以及For Each...Next。 1. Do...Loop 循环 Do...Loop循环允许根据指定的...
VBA控制结构的基础知识包括For循环、While循环、If语句、Select Case语句等。 知识点6:VBA函数和过程 VBA函数和过程是指在VBA语言中封装的一些可重用的代码块。在该代码实例中,定义了生成试场号和座位号的函数。...
4. **VBA控制结构** - 条件语句(If...Then...Else):用于根据条件执行不同的代码块。 - 循环语句(For...Next,Do...Loop):用于重复执行特定代码,直至满足指定条件。 5. **数组与集合** - 数组的使用:声明...
11. 扩展学习:了解更多的 VBA 控制结构(如 If...Then...Else、For...Next、Do...Loop),函数和对象模型,以及如何利用 VBA 自动化 Word 中的常见任务,将极大地提高办公效率。 总的来说,VBA 是一个强大的工具,...
四、VBA控制结构 1. 顺序结构:语句按顺序执行。 2. 分支结构:If...Then...Else、Select Case。 3. 循环结构:For...Next、For Each...Next、Do...Loop。 五、对象、属性、方法 1. 对象:Excel中的每个元素(如...
### VBA控制结构 1. **条件语句(If...Then...Else)**: 根据条件执行不同代码。 ```vba If condition Then ' 代码块1 Else ' 代码块2 End If ``` 2. **循环结构(For...Next, Do...Loop)**: 重复执行一段代码。 ``...
7. **VBA控制结构**: - 控制结构包括条件语句(If...Then...Else)、循环语句(For...Next, Do...Loop)和选择结构(Select Case)等,用于控制程序流程。 - 这些结构可以根据参数的值来决定执行哪些代码段。 8....
控制结构用于根据条件或循环执行代码块。条件结构包括If-Then-Else、Select Case等,而循环结构包括For-Next、For Each-Next、Do-Loop等。这些结构使得代码能够根据逻辑或重复执行,以处理复杂的应用场景。 **用户...
7. **程序结构**:VBA支持标准的编程结构,如子程序(Sub)、函数(Function)、循环(For...Next,Do...Loop)和条件语句(If...Then...Else),使代码组织有序,易于维护。 8. **错误处理**:使用`On Error`语句...
6. **控制结构**:包括条件语句(If...Then...Else)、循环(For...Next, Do...Loop)和选择结构(Select Case)等,这些控制结构决定了代码的执行流程。 7. **函数和子程序**:函数返回一个值,而子程序(Sub)...
7. **版本控制集成**:如果支持,VBA代码助手可以与Git或其他版本控制系统集成,方便代码的版本管理和协同工作。 8. **文档生成**:可能有自动生成VBA模块和类的文档功能,帮助程序员理解和维护自己的代码库。 9. ...
3. 控制结构:VBA提供了条件语句(If...Then...Else)、循环语句(For...Next、Do...Loop)和选择结构(Select Case)等,用于控制程序流程。 4. 函数与子程序:Sub过程用于执行一系列操作,而Function过程可以返回...
Excel-VBA 编程教程资源摘要 Excel-VBA 编程教程是 Excel 中的编程语言,用于自动化 ...Excel-VBA 编程教程提供了详细的 VBA 语言基础知识点、控制结构、过程和函数、内部函数等内容,是学习 VBA 编程的不二之选。
VBA的基础包括变量声明、数据类型、控制结构(如if-else语句和循环)、函数和子程序的使用。此外,VBA中的WPS对象模型允许开发者访问和操作WPS的各个组件,比如文本框、表格、图表等。 在提供的压缩包中,"使用说明...
VBA可以控制数据列表的筛选按钮,实现一键筛选或自定义筛选条件。 4. **数据库操作** “数据库.xlsm”可能包含处理大量数据的示例,VBA在这里可以模拟数据库查询的功能。比如,使用`Range`对象配合`AdvancedFilter...
6. **控制结构(Control Structures)**:包括条件语句(If...Then...Else)、循环语句(For...Next、Do...Loop)和选择结构(Select Case)。这些结构允许程序员根据条件执行不同的代码段或重复执行某些操作。 7. ...
五、VBA控制结构 1. **条件语句**: If...Then...Else 和 Select Case,用于根据条件执行不同代码。 2. **循环语句**: For...Next, Do...Loop, While...Wend,用于重复执行一段代码。 3. **错误处理**: On Error......
这些结构是VBA编程的基础,使得程序可以根据不同的情况执行相应的逻辑。 7. **使用WScript.Network对象获取计算机名** - 通过 `CreateObject("WSCRIPT.NETWORK")` 创建的对象,可以访问当前计算机的网络信息。在...
8. **应用拓展**:除了基本的Excel或WPS操作,VBA还可以与其他应用程序进行交互,如访问数据库、发送电子邮件、控制打印机等,进一步提升办公效率。 通过深入学习《WPSVBA与ExcelVBA编程实例(150例)》,你将能够...
1. **VBA基础知识**:了解VBA的基础语法,如变量声明(Dim、Static、Public、Private),数据类型(Integer、Double、String、Boolean等),以及控制结构(If...Then...Else、For...Next、Do...Loop)。 2. **子...