百分请高手:触发WithEvents事件的奇怪问题
问题描述:
1.使用VB建立一个与Excel的外接程序工程
2.使用同一个Excel.Application,每建立一个Workbook,同时定义各自独立的WithEvents响应事件
3.在一个表单窗口中使用按钮事件建立新的Workbook,Excel工作薄能建立,但是所有的事件均无响应
4.在AddinInstance_OnConnection事件里运行建立,一切都正常
请高手分析以下代码,指出不足及给个定论,谢谢.
==================================================
Connect.Dsr
Option Explicit
Private CCMenuAndBar As MenuAndBar
Private WithEvents xExcel As Excel.Application
Private xBook As ExcelWorkbook
'------------------------------------------------------
'增加菜单
'------------------------------------------------------
Private Sub AddinInstance_OnConnection(ByVal Application As Object, ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, ByVal AddInInst As Object, custom() As Variant)
On Error GoTo Error_Handler
Set xExcel = Application
Set DefGlobal.UsingApp = xExcel
DefGlobal.Initialize
Set xBook = New ExcelWorkbook
xBook.Initialize '调用此处能产生一切正常的响应事件.
Set CCMenuAndBar = New MenuAndBar
CCMenuAndBar.Initialize
Exit Sub
Error_Handler:
MsgBox Err.Description
End Sub
'------------------------------------------------------
'删除菜单
'------------------------------------------------------
Private Sub AddinInstance_OnDisconnection(ByVal RemoveMode As AddInDesignerObjects.ext_DisconnectMode, custom() As Variant)
On Error Resume Next
CCMenuAndBar.Dispose
End Sub
======================================================
Form1.frm
Private Sub Command1_Click()
Dim ThisWorkbook As ExcelWorkbook
Set ThisWorkbook = New ExcelWorkbook
ThisWorkbook.Initialize '调用此处能则没有一个新的响应事件
End Sub
=========================================================================
ExcelWorkbook.Cls
Option Explicit
Public WithEvents ThisBook As Workbook
Public Sub Initialize()
On Error Resume Next
Set ThisBook = New Workbook
Set ThisBook = DefGlobal.UsingApp.Workbooks.Open("C:\HowToUse.xls")
End Sub
Private Sub ThisBook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range)
MsgBox Sh.Cells(1, 1).Value
End Sub
===========================
DefGlobal.bas
Public UsingApp As Excel.Application