2017-02-28 37 views
1

我有一個程序,就通過我的電子步進工作得很好:使用以下郵件:如何從_NewMailex切換到_NewMail以步入VBA展望代碼

Sub Application_NewMailex(ByVal EntryIDCollection As String) 

Call MyRules 

但是,我不能跳到這個代碼來調試邏輯,顯然是因爲括號內的信息。

我能用_NewMail()替換_NewMailex(等等等等等等)並在代碼中選取/設置ByVal & EntryIDCollections,如下所示?

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 

任何幫助表示讚賞,如果它是不可能它不是一個巨大的問題,這意味着我必須對自己發送E:郵件到我要測試它每次觸發程序...

+1

上見文檔BYVAL /的ByRef:http://stackoverflow.com/documentation/vba/7363/passing-arguments-byref-or-byval#t=201702281244160240906 – R3uK

+0

'NewMailEx'是一個事件,所以當EntryIDCollection引發事件時,它被傳遞給處理程序。 'NewMail'事件沒有任何參數,所以Outlook不會將它傳遞給'EntryIDCollection'。 – Comintern

+0

R3uk - 感謝我閱讀了這篇文章,雖然我現在看到ByVal/ByRef是如何工作的,但對我的思維方式(我是一名COBOL程序員)來說,這似乎非常奇怪。我需要更多地考慮EntryIDCollection,看看爲什麼我把它放在第一位! niton - 在此之後還有其他進程使用由MyRules創建和更新的數據,它們是我正在調試的數據... –

回答

3

這是更多關於如何調試的問題。在您的NewMailex分中放置一個分號。你可以通過選擇你要開始你的調試線,然後按F9

然後去立即窗口做到這一點(你可能需要找到它的查看菜單上),然後鍵入此,替換「 EntryIdCollection「與一個有效的參數值,然後點擊輸入

Application_NewMailex "EntryIdCollection" 

您的代碼將運行到您的中斷點,您可以從那裏開始。如果您不知道什麼是有效的EntryIdCollection值,那麼只需將分隔符保留併發送給您自己的電子郵件。你可以在當地人看到EntryIdCollection的值(見下文)。

enter image description here

+0

謝謝CallumDA,它幫助了我(與上述R3uK的註釋一起)。 ..我不認爲我需要EntryIdCollection&我不應該需要BYVAL參數AFAIK,但調試將有希望證實。 感謝您的幫助:-) –

+0

沒問題,'ByVal'不是一個參數,雖然 - 它是傳遞參數的*方法*。無論如何,在你走之前,如果你能將這個答案標記爲可接受的,那將是非常好的(左邊的刻度線) – CallumDA