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
我正在使用上面的代码,它在 NEW EMAIL 触发器上运行良好(谢谢 - Gautam Mainkar(LINK)。但是,我正在尝试将 bool (真/假)变量与 Items 事件一起传递触发。
因此,我试图在 Application_Startup() 中设置 say...MyTrueFalse,因此它仅设置一次,并在 Items_ItemAdd
被新电子邮件触发时传递。
我不想要另一个子例程,只需传递在 Application_Startup() 中设置的 MyTrueFalse bool 值。
我在 Items_ItemAdd
子项上尝试了多种公共(public)设置和多个变量,但没有任何效果。我希望有人能在这里帮助我。谢谢
哦是的:它驻留在 ThisOutlookSession 中
最佳答案
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 是对的,更正了代码(以上)并且效果很好!!谢谢蒂姆。迈克
关于vba - 在 Outlook 中收到新邮件后,如何传递第二个变量以运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43024568/