Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 19448|回复: 5

[已解决]exit sub与end的区别?

[复制链接]
发表于 2011-3-14 16:27 | 显示全部楼层 |阅读模式
请教各位在VBA中exit sub与end两句有何区别?最好能举个例子说明一下,我一直没搞明白这个问题。
另外在一个过程中如何结束另一个过程的运行?例如有两个过程sub aa与sub bb,假如在开始运行sub bb的时候sub aa还在继续运行。如何加入一段代码使得:
sub bb
'先结束sub aa
'再运行其他语句
end sub
最佳答案
2011-3-14 17:02
如果你正在运行的只有一个程序,两个是一样的,如果同时运行的有两个程序,则
exit sub 只退出当前程序
end 结束所有程序的运行。
在含有窗体操作时特别需要注意。
比如,在窗体上有一个按钮,如果这个按钮执行的程序中含有
   exit sub 是退出按钮所执行的程序,窗体不会关闭
  end  不但退出按钮所执行的程序,连窗体也会关掉,所有正在运行的程序都会关掉

评分

参与人数 1 +1 收起 理由
aoe1981 + 1 很给力!

查看全部评分

发表于 2011-3-14 17:02 | 显示全部楼层    本楼为最佳答案   
如果你正在运行的只有一个程序,两个是一样的,如果同时运行的有两个程序,则
exit sub 只退出当前程序
end 结束所有程序的运行。
在含有窗体操作时特别需要注意。
比如,在窗体上有一个按钮,如果这个按钮执行的程序中含有
   exit sub 是退出按钮所执行的程序,窗体不会关闭
  end  不但退出按钮所执行的程序,连窗体也会关掉,所有正在运行的程序都会关掉

评分

参与人数 1 +1 收起 理由
aoe1981 + 1 很给力!

查看全部评分

回复

使用道具 举报

发表于 2011-3-14 17:03 | 显示全部楼层
结束另一个程序可以用变量传递
dim x
sub a()
if x=0 then exit
..
end sub
sub b()
  x=0
end if
回复

使用道具 举报

 楼主| 发表于 2011-3-15 11:22 | 显示全部楼层
回复 兰色幻想 的帖子

多谢了,兰老师,还有一个问题想请教一下。使用了end语句后是不是以前已经赋值的公共变量的值都丢失了呢?
public s as string
sub aa
s="已经赋值"
end
end sub

sub bb
msgbox s
end  sub
先运行sub aa后再运行sub bb 发现s的值变为空字符串。那么此时s的值只是仅仅变为了默认值还是s这个变量已经注销了呢?即究竟使得public s as string还是s="已经赋值"失效了呢?
回复

使用道具 举报

发表于 2011-4-1 12:20 | 显示全部楼层
public 声明的变量,丢失有两种可能,一种是你关闭了excel文件,另一种是你重新编辑了代码,其他情况都会保留的。
回复

使用道具 举报

发表于 2011-4-1 12:37 | 显示全部楼层
Saint_Zuo 发表于 2011-3-15 11:22
回复 兰色幻想 的帖子

多谢了,兰老师,还有一个问题想请教一下。使用了end语句后是不是以前已经赋值的公共 ...

这个问题,你自己试验一下不就可以了?
再提供一段测试代码

  1. Public ABC As String
  2. Sub AAA()
  3.     ABC = 1
  4.     End
  5. End Sub
  6. Sub BBB()
  7.     ABC = 2
  8. End Sub
  9. Sub CCC()
  10.     ABC = 1
  11.     Exit Sub
  12. End Sub
  13. Sub DDD()
  14.     MsgBox ABC
  15. End Sub
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-18 13:52 , Processed in 0.251252 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表