分析 "End" "Unload Me" "Exit Sub" 之间的区别与联系

 

 

             之前就想过这个问题,这么熟悉的几个东西居然对他们分析的不是很透彻、 “End”  跟  “Unload  Me”  在敲程序

的时候经常敲到,“exit  sub”  更是熟悉,下面,解析:

 

 

         End  跟 Unload me

        

         End是强制结束整个程序,而Unload Me是卸载当前窗体,当程序中最后一个窗体被卸载后,整个程序将自动

结束,如果当前窗体不是程序中的最后一个窗体,程序是不会结束的

 

         简单的就是end 是全部结束、 unload me针对当前窗口

 

         相对来说,End是强制关闭,不会发生Form_Unload和Form_Terminate事件而Unload Me关闭前会发生上面2

个事件。可以在上面的事件中加入退出处理代码最后加一点adodc 控件的使用说明可以增加,修改,显示 等...

 

 

          End sub  跟  Exit sub

 

          对于每个过程,End Sub必须有且必须只有一个,而 Exit Sub 可以有也可以没有,可以有一个,也可以有很多个、

 

          End Sub  表示过程代码的结束, 这个必须有Exit Sub 表示退出过程,若被执行,则其下的属于该过程的代码不

会被执行,通常用于中间判断例如满足某些条件时,直接退出过程而不执行其下代码、

 

 

           另外呢,有一个很有趣的说法:

 

                                  Exit Sub = 逃兵 或 中途跳伞

                                  End Sub = 结束战斗

 

 

            最后:

 

                           及其简单的说:

 

                            Unload me  卸载自己 也就是卸载当前窗体

 

                            Exit sub   结束过程 / 跳出这个过程 

 
                            End      结束全部

 

 

         

 

 

转载于:https://www.cnblogs.com/wangc66/p/5172192.html

``` Option Explicit Private Sub btnStart_Click() Dim diameterA As Double Dim diameterB As Double ' 获取输入的直径 On Error Resume Next diameterA = CDbl(txtDiameterA.Text) diameterB = CDbl(txtDiameterB.Text) On Error GoTo 0 If diameterA <= 0 Or diameterB <= 0 Then MsgBox "请输入有效的直径数值!", vbExclamation, "错误" Exit Sub End If Dim acadApp As Object Dim acadDoc As Object Dim selSet As Object Dim filterType(0) As Integer Dim filterData(0) As Variant Dim obj As Object Dim circ As Object Dim newCirc As Object Dim centerPoint As Variant Dim newCenter(0 To 2) As Double Dim radius As Double Dim newRadius As Double ' 获取AutoCAD应用程序对象 Set acadApp = ThisDrawing.Application Set acadDoc = acadApp.ActiveDocument ' 允许用户选择对象 On Error Resume Next filterType(0) = 0 ' 过滤对象类型 filterData(0) = "CIRCLE" acadDoc.Utility.Prompt "请框选查找6.4mm圆的区域..." Set selSet = acadDoc.SelectionSets.Add("MySelectionSet") selSet.SelectOnScreen filterType, filterData ' 遍历选定对象 If selSet.count > 0 Then For Each obj In selSet If TypeOf obj Is AcadCircle Then Set circ = obj radius = circ.radius ' 检查是否是直径6.4mm的圆 If Abs(radius * 2 - diameterA) < 0.001 Then centerPoint = circ.center newRadius = diameterB ' 新圆的半径为1mm的一半 ' 计算新圆心,使新圆位置 newCenter(0) = centerPoint(0) + radius '+ newRadius newCenter(1) = centerPoint(1) newCenter(2) = centerPoint(2) ' 创建新圆 Set newCirc = acadDoc.modelSpace.AddCircle(newCenter, newRadius) newCirc.color = 1 ' 设为红色以便区分 End If End If Next Else acadDoc.Utility.Prompt "未找到符合条件的圆!" End If ' 清理选择集 selSet.Delete End Sub Private Sub btnExit_Click() Unload Me End Sub```这是AutoCAD的vba代码,运行没有报错,但是也不能有效执行命令,检查一下错误
最新发布
03-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值