如何从_NewMailex切换到_NewMail以进入VBA Outlook代码

如何从_NewMailex切换到_NewMail以进入VBA Outlook代码,vba,outlook,Vba,Outlook,我有一个程序,它可以很好地使用以下方法来处理我的电子邮件: Sub Application_NewMailex(ByVal EntryIDCollection As String) Call MyRules 然而,我无法进入这段代码来调试逻辑,显然是因为括号内的信息 我是否能够用_NewMail()替换_NewMailex(诸如此类),并在代码中选择/设置ByVal&entrydcollections,如下所示 Sub Application_NewMail() ByVal <<

我有一个程序,它可以很好地使用以下方法来处理我的电子邮件:

Sub Application_NewMailex(ByVal EntryIDCollection As String)

Call MyRules
然而,我无法进入这段代码来调试逻辑,显然是因为括号内的信息

我是否能够用_NewMail()替换_NewMailex(诸如此类),并在代码中选择/设置ByVal&entrydcollections,如下所示

Sub Application_NewMail()

ByVal <<< how do I set this (what does it even mean ?!?)

EntryIDCollection As String <<< Can EntryIDCollection just be defined with my other Variables ?

Call MyRules
子应用程序\u NewMail()

ByVal这更多的是关于如何调试的问题。在
NewMailex
sub中放置一个断点。您可以通过突出显示要开始调试的行并按F9来完成此操作

然后转到立即窗口(您可能需要在“视图”菜单上找到它)并键入此命令,将“EntrydCollection”替换为有效的参数值,然后按enter键

你的代码将运行到你的断点,你可以从那里逐步通过。如果您不知道有效的EntrydCollection值是什么样子的,那么只需留下中断标记并向自己发送电子邮件即可。您可以在局部变量中看到EntrydCollection的值(见下文)


请参阅ByVal/ByRef上的文档:
NewMailEx
是一个事件,因此当它引发事件时,Outlook会将
entrydcollection
传递给处理程序。
NewMail
事件没有任何参数,因此Outlook不会将
entrydcollection
.R3uk传递给它-感谢我阅读了这篇文章,虽然我现在看到了ByVal/ByRef的工作原理,但在我的思维方式中,它似乎非常奇怪(我是一名COBOL程序员)。我需要更多地考虑EntrydCollection,看看我为什么把它放在首位!尼顿-之后还有其他进程使用MyRules创建和更新的数据,它们是我正在调试的…谢谢你,这帮助了我(以及上面R3uK的评论)。。。我认为我不需要entrydcollection&我不需要ByVal参数AFAIK,但调试将有望证实这一点。感谢您的帮助:-)没问题,
ByVal
不是参数,而是传递参数的方法。无论如何,在你走之前,如果你能将这个答案标记为已接受,那就太好了(在左边打勾)
Application_NewMailex "EntryIdCollection"