2022年VBA控制结构 .pdf

上传人:C****o 文档编号:33389558 上传时间:2022-08-10 格式:PDF 页数:5 大小:45.21KB
返回 下载 相关 举报
2022年VBA控制结构 .pdf_第1页
第1页 / 共5页
2022年VBA控制结构 .pdf_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《2022年VBA控制结构 .pdf》由会员分享,可在线阅读,更多相关《2022年VBA控制结构 .pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、VBA控制结构一、 循环结构循环结构允许重复执行一行或数行代码。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 当 Visua

2、l Basic执行这个 Do循环时会首先测试 condition。如果 condition为 False (零),则跳过所有语句。如果condition为 True 非零),则Visual Basic 执行语句,然后退回到Do While 语句再测试条件。因此,只要 condition为 True 或非零,循环可以随意执行多少次。如果 condition一开始便为False ,则不会执行语句。 Do.Loop语句的另一种演变形式是先执行语句,然后在每次执行后测试condition。这种形式保证statements至少执行一次: Do statements Loop While conditio

3、n 其他两种演变形式类似于前两个,所不同的是,只要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 都是数值型

4、的。注意 :increment参数可正可负。如果increment为正,则 start必须小于等于end,否则不能执行循环内的语句。如果increment为负,则 start必须大于等于end,这样才能执行循环体。如果没有设置Step,则 increment缺省值为 1。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 5 页 - - - - - - - - - 在执行 For 循环时, Visual Basic的执行过程如下。(1)设置 counter等于 start。(

5、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 S

6、ub 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 Ta

7、bleDef Set objDb = OpenDatabase(c:vbbiblio.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不能与用户自定义类型

8、的数组一起使用,因为Variant不可能包含用户自定名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 5 页 - - - - - - - - - 义类型。二、 使用控制结构嵌套控制结构可以把控制结构放入另一个控制结构之内(例如在 For.Next循环中的 If.Then块)。一个控制结构内部包含另一个控制结构叫做 nest (嵌套)。在Visual Basic中,控制结构的嵌套层数没有限制。按一般习惯,为了使判定结构和循环结构更具可读性,总是用缩排方式书写判定结构或循环的正

9、文部分。例如,下面的过程要把打印机和屏幕共有的字体名全部打印出来: 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语

10、句配对。嵌套的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 stat

11、ementblock Exit Do statementblock Loop Exit Do语句可以在Do循环语法的所有版本中使用。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 5 页 - - - - - - - - - Exit For和 Exit Do非常有用,因为它有时适于立即退出循环,而且不再执行循环中的任何进一步迭代或者语句。例如,在前面的打印屏幕和打印机共有字体的例子中,程序不断将打印机字体和给定的屏幕字体作比较,甚至在已经找到了一个相符的打印机字体后还在继

12、续寻找。对这个函数有一个效率更高的改进版,在此,只要找到相匹配的字体后就立即退出循环: 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语句或

13、Select Case 语句在循环内嵌套。用 Exit语句中断循环时,计数器变量的值会因退出循环的方式而不同:(1)在完成循环时,计数器的值等于上限值加上步进值。(2)在提前退出循环时,计数器变量保持其值,并遵从有关取值范围的一般规则。(3) 在集合之外迭代时, 如果计数器变量为 Object类型,则其值为 Nothing ; 如果计数器变量为 Variant类型,则其值为Empty。四、退出子过程或函数过程也可从控制结构内部退出过程。Exit Sub和 Exit Function 的语法和“退出控制结构”中的 Exit For和 Exit Do相似。 Exit Sub 可以出现在子过程主体内

14、的任何地方,出现的次数随需要而定。当过程已完成每个任务并可直接返回时,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 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 5 页 - - - - - - - - - Next PFont Next SFont End Sub 小草网络工作室,2006 年 5 月 30 日,经过删减名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 5 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁