VBA编程知识点(4)——流程控制goto和exit
发布网友
发布时间:2024-09-03 10:13
我来回答
共1个回答
热心网友
时间:2024-10-22 11:23
学习自杨洋老师《全民一起VBA》提高篇第6课
在程序的流程控制中,逻辑变量可以作为一个标志,或者说是一个开关,当开关闭合时就退出流程。例如,在示例代码中,zhao = Not zhao就相当于一个开关,当找到第一个数据时,开关闭合,退出查找流程。
exit语句(又称“短路语句”)直接跳出一个循环结构或一个子过程(函数)。
(1)exit语句种类
退出do while循环时,使用exit do;
退出for循环,使用exit for
退出sub子过程,使用exit sub;
退出function函数,使用exit function
While wend循环没有相应的exit退出语句,所以该循环不推荐使用。
(2)一个示例
(3)exit只能跳出一层循环
当有多层循环嵌套时,exit只能退出它所在的那一层循环。要跳出多层循环,需要多个判断语句与exit语句配合。
goto语句可以跳转到同一个过程(函数)内的任意一行。使用goto语句前,需要先给某个要跳转到的语句加上标签。标签的标志符号是冒号。下面是一个示例。
goto语句一般不推荐使用,特别是过多的使用。过多使用goto语句会使程序流程复杂难懂,这种程序被称为面条式的程序,后期是难以维护的。
但是goto语句在错误处理时却很有作用。当程序交付客户使用时,如果经常弹出标准专业的错误提示时,客户体验就会非常差。这时,可以在可能会经常出错的语句前面加上goto语句,一旦发生错误,就跳转到设定的语句,给客户温馨提示。下面是一个示例:
值得一提的是,上面这个示例中,如果没有exit sub语句,程序不出错,仍然会执行到错误提示语句myerror。所以exit sub是不可缺少的。程序有两个流程,一个是正常流程,一个是错误处理流程。
4. 对于错误处理,除了on error goto外,还有一个语句on error resume next。它的意思是,从下一句开始执行,如果某行出错,就忽略它并继续执行。下面是一个示例。
对于以上程序,当i被输入为200时,i=i^2就会发生溢出错误,所以该行会被忽略,i不变,仍然为200。
使用语句on error resume next的后果不是无法预测的,一定要谨慎使用。