How to skip SECOND Variable to run after receiving new mail in Outlook?

Private WithEvents Items As Outlook.Items
Public MyTrueFalse As Boolean 
Private Sub Application_Startup()
  Dim MyTrueFalse As Boolean 'Redundant?'
  MyTrueFalse = True 'Defaults to False'  
  Dim olApp As Outlook.Application 
  Dim objNS As Outlook.NameSpace 
  Set olApp = Outlook.Application 
  Set objNS = olApp.GetNamespace("MAPI") 
  ' default local Inbox
  Set Items = objNS.GetDefaultFolder(olFolderInbox).Items 
End Sub
Private Sub Items_ItemAdd(ByVal item As Object, ByVal MyTrueFalse As Boolean) 
  If MyTrueFalse Then GoTo DoThisAlso 'Example Only'
  On Error Goto ErrorHandler 
  Dim Msg As Outlook.MailItem 
  If TypeName(item) = "MailItem" Then
    Set Msg = item 
    ' ******************
    ' do something here
    ' ******************
  End If
DoThisAlso:
   MsgBox "MyTrueFalse is: " & MyTrueFalse
ProgramExit: 
  Exit Sub
ErrorHandler: 
  MsgBox Err.Number & " - " & Err.Description 
  Resume ProgramExit 
End Sub

      

I am using the above code and working fine on the NEW EMAIL trigger (THANKS - Gautam Mainkar ( LINK ). However, I am trying to pass Boolean (True / False) along with the Items event trigger.

So I'm trying to say ... MyTrueFalse in Application_Startup (), so it is set ONLY ONCE and is passed whenever it Items_ItemAdd

starts at a new address.

I don't need another routine, just pass the MyTrueFalse boolean as set in Application_Startup ().

I tried several options for public settings and a few variables in the tab Items_ItemAdd

and nothing works. I hope someone can help me. Thanks to

Oh yes: it is in ThisOutlookSession

+3


source to share


1 answer


Private WithEvents Items As Outlook.Items
Private MyTrueFalse As Boolean 
Private Sub Application_Startup()
  MyTrueFalse = True  
  Dim olApp As Outlook.Application 
  Dim objNS As Outlook.NameSpace 
  Set olApp = Outlook.Application 
  Set objNS = olApp.GetNamespace("MAPI") 
  ' default local Inbox
  Set Items = objNS.GetDefaultFolder(olFolderInbox).Items 
End Sub
Private Sub Items_ItemAdd(ByVal item As Object) 
  If MyTrueFalse Then GoTo DoThisAlso 'Example Only'
  On Error Goto ErrorHandler 
  Dim Msg As Outlook.MailItem 
  If TypeName(item) = "MailItem" Then
    Set Msg = item 
    ' ******************
    ' do something here
    ' ******************
  End If
DoThisAlso:
   MsgBox "MyTrueFalse is: " & MyTrueFalse
ProgramExit: 
  Exit Sub
ErrorHandler: 
  MsgBox Err.Number & " - " & Err.Description 
  Resume ProgramExit 
End Sub

      



Tim Williams was right, corrected the code (above) and works great! Thanks Tim. Mike

0


source







All Articles