2017-07-29 59 views
0

我遇到了以下情况。打开和关闭多个任务项时关闭事件不起作用

  • 公开赛执行open事件
  • 打开任务
  • 执行open事件
  • 关闭第一个任务
  • 不执行任何接近事件的第二前景进行了展望任务
  • ! !
  • 关闭
  • 执行
  • close事件的第二个任务

没有任何人有一个线索这里发生了什么? 我做了一些不好的编程吗?我已将我的代码放在下面。

预先感谢您。

亲切的问候,

Wamor

Public WithEvents objInspectors As Outlook.Inspectors 
Public WithEvents objJournal As Outlook.JournalItem 
Public WithEvents objTask As Outlook.TaskItem 

Dim objOldTask As Outlook.TaskItem 

Private Sub Application_Startup() 
    Set objInspectors = Outlook.Inspectors 
    Set objTask = Nothing 
    Set objJournal = Nothing 
    Set objOldTask = Nothing 
End Sub 

Private Sub objInspectors_NewInspector(ByVal Inspector As Inspector) 
    If TypeOf Inspector.CurrentItem Is TaskItem Then 
     Set objTask = Inspector.CurrentItem 
    End If 
    If TypeOf Inspector.CurrentItem Is JournalItem Then 
     Set objJournal = Inspector.CurrentItem 
    End If 
End Sub 

Private Sub objTask_Open(Cancel As Boolean) 
    MsgBox "TaskItem open event" 
End Sub 

Private Sub objTask_close(Cancel As Boolean) 
    MsgBox "TaskItem close event" 
End Sub 

回答

0

当然 - 打开了多个对象,但只有一个变量来存储他们参考。

处理类似问题的标准方法是让包含Inspector和Item(两个项目 - 您的案例中的TaskItem和JournalItem)作为变量的包装类。 TaskOpen和TaskClose事件处理程序将是该包装类上的方法。 当NewInspector事件触发时,创建包装类的实例并填充其属性。将包装类添加到全局列表中。 关闭事件触发时,从列表中删除包装类。