2017-07-29 12 views
0

次のような状況に陥りました。複数のタスクアイテムを開いたり閉じたりすると、イベントがクローズしない

  • オープン見通しタスク
  • オープンイベントが
  • オープンオープンイベントが
  • は、最初のタスク
  • ませcloseイベントが実行されていないを閉じて実行されるタスク
  • 秒の見通しが実行されます! !!
  • 近いイベントが

を実行する

  • 2番目のタスクを閉じ誰もがここで何が起こっているのかの手掛かりを持っていますか? 悪いプログラミングをしましたか?私は自分のコードを以下に置いた。

    ありがとうございます。

    敬具、

    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

    - あなたが開いている複数のオブジェクトを持っているが、それらへの参照を格納するための単一の変数のみ。変数として -

    このような問題に対処するための標準的な方法は、インスペクタおよびアイテム(たTaskItemとJournalItemあなたのケースでは2つの項目)を持つラッパークラスを持つことです。 TaskOpenおよびTaskCloseイベントハンドラは、そのラッパークラスのメソッドになります。 NewInspectorイベントが発生すると、ラッパークラスのインスタンスを作成し、そのプロパティを設定します。ラッパークラスをグローバルリストに追加します。 closeイベントが発生すると、リストからラッパークラスを削除します。

    関連する問題