举个例子:
Private Sub Command1_Click()
    ExitClick
    MsgBox "弹出Message"
End SubPrivate Sub ExitClick()
    ......
End Sub通过调用ExitClick来结束Command1_Click,不执行后面的Msgbox,
而不在Command1_Click中写Exit Sub

解决方案 »

  1.   

    有exit sub干嘛不用你的目的是?
      

  2.   

    Private Sub Command1_Click()
       If ExitClick=xxxx then
        MsgBox "弹出Message"
       end if
    End SubPrivate Function ExitClick()
        ......
    End Sub
      

  3.   

    理论上是不可能的
    除非楼主是汇编高手:
    1.根据Command1_Click中变量的地址推出栈中存储的原IP、SP
    2.根据ExitClick中变量的地址推出栈中存储的原IP、SP的地址,并根据上面得到的值修改存储的原IP、SP
    这时只要ExitClick一返回,就会回到Command1_Click的上级函数只不过还要考虑结构化异常处理的问题
    还需要回复fs:[0]
      

  4.   

    可以利用堆栈遍历的原理,通过ebp得到esp,再通过esp得到ebp和返回地址,然后继续下去。
    至于seh,因为seh的结构是在堆栈上的,可以用esp来判断fs:[0]链表节点是否属于要退出的函数。
    但还是不大可能,因为直接退出事件引起的后果是未释放的Me对象和其他变量等。
      

  5.   

    可不可以这样    
    SetWindowsHookEx 'hook GetMessage
    如果是消息是传递给comand1的,且消息类型是Click
    则修改该消息,达到屏蔽的目的