|
本帖最后由 hehex 于 2012-10-25 10:14 编辑
冬日暖暖 发表于 2012-10-25 09:26 
非常感谢你的解释,我大体明白了。
原来奇怪的跳转是因为第一个Sub Edit()并没有结束。也解释了,为什么 ...
因为代码5这句话激活了事件B, 然后一直到事件B 结束,回归回来继续执行事件A就是代码6。这个程序的事件激活是调用事件自己,就是递归调用,比较不容易明白,我举个例子:
Option Explicit
Sub main()
Call 事件A
MsgBox "Hello World,all sub completed, I am return to main.", , "Main"
End Sub
Sub 事件A()
MsgBox "我下面一句是代码5,要调用事件B", , "事件A"
Call 事件B
MsgBox "我是代码6,在事件B 结束之后执行的我", , "事件A"
End Sub
Sub 事件B()
MsgBox "我是被代码5 激活的,现在我要结束了,返回事件A", , "事件B"
End Sub
Okay, 我们不去探究 Application.EnableEvents 了,这点基本上已经明白了。现在讨论的是事件(过程)的激活与返回,因为书上的例子不是用来讨论这个的,当 Application.EnableEvents = False 时,实际上是自己激活自己产生了递归调用,很容易让人迷惑。 看我做的这个激活事件的例子,运行一下看看是不是有助于理解。我随手写的,难免有语法错误,如果有请帮忙修正。
|
|