在personal.xls的thisworkbook中有两个程序:Private Sub Workbook_BeforeClose(Cancel As Boolean)
    
    MsgBox "hi!"
    
End SubPrivate Sub Workbook_Open()    MsgBox "hi!"
    
End Sub为何open()的可以正常执行,而beforeclose()完全无反应?貌似关闭工作表时,完全没有触发beforeclose(),因为在beforeclose()的语句msgbox 前加上追踪点(breakpoint)然后关闭工作表,程序没有在追踪点上面停顿????

解决方案 »

  1.   

    我试的代码:Private Sub Workbook_BeforeClose(Cancel As Boolean)
      MsgBox "hihi!"
    End SubPrivate Sub Workbook_Open()
      MsgBox "hi!"   
    End Sub
      

  2.   


    ---------------------------
    请问您的代码是放在personal.xls里面测试的吗?我也觉得在一般的book1,book2.。。的Thisworkbook模块里测试这些代码是没有问题的,但是一旦你把代码放在personal.xls的thisworkbook里面,就产生了这个问题!!!我的猜想是这样的,在打开任意一个工作表时,会首先执行personal.xls中的程序,然后才激活book1,book2这些真正的工作表,所以open()被正常执行;然后就没有personal.xls什么事了,在关闭工作表时,不再激发personal.xls的thisworkbook的事件,是不是这样呢?
      

  3.   

    http://www.vbaexpress.com/forum/archive/index.php/t-30797.html参考了这个帖子,搞定了,但不明所以!