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 的用法相关推荐

  1. VBA学习笔记之VBA学习思路

    进阶的知识点 1. SQL查询语句和ADO 2. 正则表达式和网抓 3. 窗体与控件 4. API 类模块 等等 作者:SOROSay 链接:https://www.zhihu.com/questio ...

  2. VBA学习笔记1:将同个文件夹中的工作簿汇总为一个工作簿,并建立目录超链接

    VBA学习笔记1:将同个文件夹中的工作簿汇总为一个工作簿,并建立目录超链接 1.将文件夹中的xlsx文件名复制到新工作簿: 2.将文件夹中的xlsx数据簿中的sheet复制到新表并重命名: 3.插入超 ...

  3. VBA学习笔记(9)--生成点拨(1)

    VBA学习笔记(9)--生成点拨(1) 说明(2017.3.26): 1. 还没写完,写到新建文件夹了,下一步新建word,重命名,查找点拨,把点拨复制进去,因为要给点拨编号,应该会很麻烦 1 Pub ...

  4. 陈表达VBA学习笔记-新建工作表鼠标右键菜单按钮

    陈表达VBA学习笔记-新建工作表鼠标右键菜单按钮:新建一个我的菜单按钮 设置对应的宏过程名称为 [我的菜单宏] 点击按钮弹窗信息,信息可自定义设置 详细代码如下: Sub 新建右键菜单()Dim 菜单 ...

  5. VBA学习笔记2:将工作簿的表格拆分为工作簿

    VBA学习笔记2:将工作簿的表格拆分为工作簿 1.判断原有工作簿的sheet是否需要拆分: 2.如需拆分则创建新表: 3.将原sheet复制到新建的工作簿中. 效果如下: 代码执行前,有1个工作簿,需 ...

  6. VBA学习笔记8:单元格的合并与拆分

    VBA学习笔记8:单元格的合并与拆分 如下图,需要实现1图到2图(单元格合并),或2图到1图(单元格拆分). 1图: 2图: 合并单元格代码如下: Sub 合并单元格()Dim k%, rng As ...

  7. VBA学习笔记3:合并同一工作簿下的多个表格

    VBA学习笔记3:合并同一工作簿下的多个表格 1.建立一个新的汇总表: 2.将其他sheet数据复制到汇总表中. 效果如下: 需要将3个sheet的表的数据汇总起来 汇总后的数据: 代码如下: Sub ...

  8. VBA学习笔记5:将同一工作簿的数据按照类别拆分为多个工作簿

    VBA学习笔记5:将同一工作簿的数据按照类别拆分为多个工作簿 1.对每行数据按照类别所在列进行循环,判断某类别的工作簿是否存在: 2.如果不存在,则新建工作簿并将该行数据复制粘贴: 3.如果存在则打开 ...

  9. Excel VBA 学习笔记13:单元格的格式

    Excel VBA 学习笔记13:单元格的格式 NumberFormat 属性 (Excel) vba excel 单元格格式设置 Excel VBA 单元格格式 python解决SNIMissing ...

  10. VBA 学习笔记 - 网络请求

    VBA 学习笔记 - 网络请求 Microsoft.XMLHTTP MSXML2.serverXMLHTTP.6.0 WinHttp.WinHttpRequest.5.1 参考资料 Microsoft ...

最新文章

  1. 简单介绍vue获取token实现token登录的示例代码
  2. fitnesse - 框架介绍
  3. hbuilder egit插件的安装使用--项目文件丢失的教训
  4. C++ stringstream输入方式
  5. 如何push一个docker镜像到DockerHub上
  6. android编程多组件布局,Android把多个控件定义成一个整体的布局类使用
  7. Python——如何将不规范的英文名字转化为“首字母大写,其他字母小写”的规范名字
  8. 回顾︱DeepAR 算法实现更精确的时间序列预测(二)
  9. selenium+python模拟键盘鼠标操作,python3.6安装pyUserInput
  10. 揭秘本周聪明钱|主力资金集中追捧“券业新一哥”;融资客不惧利空潜入这只股!
  11. tas5424_TAS5414A,TAS5424A,-电子电路图,电子技术资料网站
  12. Ruby编程语言简介
  13. 咔嚓冲印: 用IPHONE冲印LOMO卡片和明信片
  14. 单点登录怎么整合项目_如何推销新项目:整合设计,创建登录页面并“吸引”用户...
  15. bag java_Bag.java · linbo/Bag_Queue_Stack_Java - Gitee.com
  16. 无法使用此产品的安装源,请确认安装源存在,并且您可以访问它
  17. java生命游戏_实用---生命游戏 Java
  18. 【程序人生】卡塔尔世界杯元素python海龟绘图(附源代码),世界杯主题前端特效5个(附源码)
  19. 萌新小白的历程以及下一步开发方案,请求全栈大佬的指点鸭!
  20. 如何把图片做成gif?怎样做出gif动态图?

热门文章

  1. 使用天平只用3次求出12个球中的次品球并确认轻重
  2. Guava中基础工具类Joiner的使用字符串拼接方法 joiner.on
  3. 大学生创新工作室阶段性总结
  4. java毕业设计广告投放mybatis+源码+调试部署+系统+数据库+lw
  5. python 豆瓣电影top250_python 爬豆瓣电影top250
  6. 为什么你不想学习?只想玩?人是如何一步一步废掉的
  7. java catch空指针异常处理_Java基础学习:java文件空指针异常处理
  8. 《华尔街》观后笔记7——阳光交易
  9. ISCC 2018 Reverse WriteUp
  10. 【OpenGL ES】立方体贴图(6张图)