【原创】VBA学习笔记(306)VBA中关于 exit 的用法
1 exit 用法的简要总结
1.1 具体用法
- exit do ' 用在do loop 循环里
- exit for ' 用在 for next 循环里
- exit sub ' 用在sub里
- exit function ' 用在function里
- exit propperty '??
1.2 错误的用法
- exit '不能单独使用
- exit if '一般并没有必要跳出 if 吧
2 exit for 只会跳出本层循环
2.1 正常2层循环
Sub ponymatest1()For i = 1 To 10For j = 1 To 5If j = 3 Thenm = m + 1Debug.Print "第" & m & "次" & "j=" & jEnd IfNextIf i = 7 Thenn = n + 1Debug.Print "第" & n & "次" & "i=" & i & " ";End IfNext
End Sub
2.2 可以看出exit 跳出的循环只是本层的循环
- 两层for 循环,对应的 exit for 只会跳出本层
Sub ponymatest1()For i = 1 To 10For j = 1 To 5If j = 3 Thenm = m + 1Debug.Print "第" & m & "次" & "j=" & jExit ForEnd IfNextIf i = 7 Thenn = n + 1Debug.Print "第" & n & "次" & "i=" & i & " ";Exit ForEnd If
Next
end sub
2.3 如果是exit sub 会跳出整个sub
- exit for 跳出循环
- exit sub 跳过整个过程,停止执行这个sub
Sub ponymatest1()For i = 1 To 10For j = 1 To 5If j = 3 Thenm = m + 1Debug.Print "第" & m & "次" & "j=" & jExit SubEnd IfNextIf i = 7 Thenn = n + 1Debug.Print "第" & n & "次" & "i=" & i & " ";Exit ForEnd If
Next
end sub
3 end 和 exit sub的差别不大?
- end sub 只能用在最后,并且end sub 后面不能有 有效的语句代码
- 只有 end 可能出现在 代码块的中间
- end 和exit sub 是有差别的
- 虽然看起来,只运行1个sub的话差别不大的样子?
3.1 原始代码
Sub ponymatest1()
For i = 1 To 5If i = 3 ThenDebug.Print "i*i=" & i * iEnd If
Next
ponymatest2
End SubSub ponymatest2()
Debug.Print "hello, I am " & "ponymatest2"
End Sub
3.2 加入exit for
Sub ponymatest1()
For i = 1 To 5If i = 3 ThenDebug.Print "i*i=" & i * iExit ForEnd If
Next
ponymatest2
End SubSub ponymatest2()
Debug.Print "hello, I am " & "ponymatest2"
End Sub
3.3 加入 exit sub
- 跳出了sub 不再执行后面的语句
Sub ponymatest1()
For i = 1 To 5If i = 3 ThenDebug.Print "i*i=" & i * iExit SubEnd If
Next
ponymatest2
End SubSub ponymatest2()
Debug.Print "hello, I am " & "ponymatest2"
End Sub
3.4 加入end
- 结束了sub 不再执行后面的语句
Sub ponymatest1()
For i = 1 To 5If i = 3 ThenDebug.Print "i*i=" & i * iEndEnd If
Next
ponymatest2
End SubSub ponymatest2()
Debug.Print "hello, I am " & "ponymatest2"
End Sub
4 end 和 exit sub的真实差别
4.1 变量释放上不一样
- End释放所有变量的内存,然后退出所有sub
- 而exit sub仅仅退出当前sub ,并不释放变量
Dim aSub ponymatest1()a = 101Exit Sub
End SubSub ponymatest2()a = 102End
End SubSub ponymatest3()Debug.Print a
End SubSub test1()ponymatest1ponymatest3
End SubSub test2()ponymatest2ponymatest3
End Sub
4.2 end 会终止所有正在运行的VB程序?
- 如果你正在运行的只有一个程序,两个是一样的,如果同时运行的有两个程序,则
- exit sub 只退出当前程序
- end 结束所有程序的运行
4.3 end 会终止sub 和其他窗体等
- end不管关闭这个sub ,还会关闭其他东西: 窗体等
- 在含有窗体操作时特别需要注意。
- 比如,在窗体上有一个按钮,如果这个按钮执行的程序中含有 exit sub 是退出按钮所执行的程序,窗体不会关闭。
- end 不但退出按钮所执行的程序,连窗体也会关掉,所有正在运行的程序都会关掉
5 加了exit , 是否可以不需要本身的结尾了?---不能省略其他关键字
- 比如 for next 如果有了exit for 了 可以不需要next了吗? 不行
- do loop 中间有了 exit do ,显然还是需要末尾有 loop的
- sub ... end sub 也是不能省略的
- function ... end function
Sub ponyma1()arr1 = Range("j1:k10")
For i = LBound(arr1) To UBound(arr1)For j = LBound(arr1, 2) To UBound(arr1, 2)If arr1(i, j) > 999 ThenDebug.Print arr1(i, j)Exit ForEnd If '有exit for了,是不是可以不要end if? '如果缺少这个,会显示next没有forNextIf arr1(i, j) = "a" ThenDebug.Print arr1(i, j)Exit SubEnd IfNext'Exit SubEnd Sub
【原创】VBA学习笔记(306)VBA中关于 exit 的用法相关推荐
- VBA学习笔记之VBA学习思路
进阶的知识点 1. SQL查询语句和ADO 2. 正则表达式和网抓 3. 窗体与控件 4. API 类模块 等等 作者:SOROSay 链接:https://www.zhihu.com/questio ...
- VBA学习笔记1:将同个文件夹中的工作簿汇总为一个工作簿,并建立目录超链接
VBA学习笔记1:将同个文件夹中的工作簿汇总为一个工作簿,并建立目录超链接 1.将文件夹中的xlsx文件名复制到新工作簿: 2.将文件夹中的xlsx数据簿中的sheet复制到新表并重命名: 3.插入超 ...
- VBA学习笔记(9)--生成点拨(1)
VBA学习笔记(9)--生成点拨(1) 说明(2017.3.26): 1. 还没写完,写到新建文件夹了,下一步新建word,重命名,查找点拨,把点拨复制进去,因为要给点拨编号,应该会很麻烦 1 Pub ...
- 陈表达VBA学习笔记-新建工作表鼠标右键菜单按钮
陈表达VBA学习笔记-新建工作表鼠标右键菜单按钮:新建一个我的菜单按钮 设置对应的宏过程名称为 [我的菜单宏] 点击按钮弹窗信息,信息可自定义设置 详细代码如下: Sub 新建右键菜单()Dim 菜单 ...
- VBA学习笔记2:将工作簿的表格拆分为工作簿
VBA学习笔记2:将工作簿的表格拆分为工作簿 1.判断原有工作簿的sheet是否需要拆分: 2.如需拆分则创建新表: 3.将原sheet复制到新建的工作簿中. 效果如下: 代码执行前,有1个工作簿,需 ...
- VBA学习笔记8:单元格的合并与拆分
VBA学习笔记8:单元格的合并与拆分 如下图,需要实现1图到2图(单元格合并),或2图到1图(单元格拆分). 1图: 2图: 合并单元格代码如下: Sub 合并单元格()Dim k%, rng As ...
- VBA学习笔记3:合并同一工作簿下的多个表格
VBA学习笔记3:合并同一工作簿下的多个表格 1.建立一个新的汇总表: 2.将其他sheet数据复制到汇总表中. 效果如下: 需要将3个sheet的表的数据汇总起来 汇总后的数据: 代码如下: Sub ...
- VBA学习笔记5:将同一工作簿的数据按照类别拆分为多个工作簿
VBA学习笔记5:将同一工作簿的数据按照类别拆分为多个工作簿 1.对每行数据按照类别所在列进行循环,判断某类别的工作簿是否存在: 2.如果不存在,则新建工作簿并将该行数据复制粘贴: 3.如果存在则打开 ...
- Excel VBA 学习笔记13:单元格的格式
Excel VBA 学习笔记13:单元格的格式 NumberFormat 属性 (Excel) vba excel 单元格格式设置 Excel VBA 单元格格式 python解决SNIMissing ...
- VBA 学习笔记 - 网络请求
VBA 学习笔记 - 网络请求 Microsoft.XMLHTTP MSXML2.serverXMLHTTP.6.0 WinHttp.WinHttpRequest.5.1 参考资料 Microsoft ...
最新文章
- 简单介绍vue获取token实现token登录的示例代码
- fitnesse - 框架介绍
- hbuilder egit插件的安装使用--项目文件丢失的教训
- C++ stringstream输入方式
- 如何push一个docker镜像到DockerHub上
- android编程多组件布局,Android把多个控件定义成一个整体的布局类使用
- Python——如何将不规范的英文名字转化为“首字母大写,其他字母小写”的规范名字
- 回顾︱DeepAR 算法实现更精确的时间序列预测(二)
- selenium+python模拟键盘鼠标操作,python3.6安装pyUserInput
- 揭秘本周聪明钱|主力资金集中追捧“券业新一哥”;融资客不惧利空潜入这只股!
- tas5424_TAS5414A,TAS5424A,-电子电路图,电子技术资料网站
- Ruby编程语言简介
- 咔嚓冲印: 用IPHONE冲印LOMO卡片和明信片
- 单点登录怎么整合项目_如何推销新项目:整合设计,创建登录页面并“吸引”用户...
- bag java_Bag.java · linbo/Bag_Queue_Stack_Java - Gitee.com
- 无法使用此产品的安装源,请确认安装源存在,并且您可以访问它
- java生命游戏_实用---生命游戏 Java
- 【程序人生】卡塔尔世界杯元素python海龟绘图(附源代码),世界杯主题前端特效5个(附源码)
- 萌新小白的历程以及下一步开发方案,请求全栈大佬的指点鸭!
- 如何把图片做成gif?怎样做出gif动态图?
热门文章
- 使用天平只用3次求出12个球中的次品球并确认轻重
- Guava中基础工具类Joiner的使用字符串拼接方法 joiner.on
- 大学生创新工作室阶段性总结
- java毕业设计广告投放mybatis+源码+调试部署+系统+数据库+lw
- python 豆瓣电影top250_python 爬豆瓣电影top250
- 为什么你不想学习?只想玩?人是如何一步一步废掉的
- java catch空指针异常处理_Java基础学习:java文件空指针异常处理
- 《华尔街》观后笔记7——阳光交易
- ISCC 2018 Reverse WriteUp
- 【OpenGL ES】立方体贴图(6张图)