2013-10-04 99 views
1

我使用多個帳戶並經常代表其他帳戶發送。使用「全部回覆」時,我會將副本發送到我發送的帳戶。刪除SendOnBehalfOf收件人回覆全部

爲了防止這種情況,我在newItem_Open下面的代碼 - 子:

Dim i As Long 
For i = 1 To newItem.Recipients.Count 
    If newItem.Recipients(i).Name = newItem.SentOnBehalfOfName Then newItem.Recipients.Remove i 
Next i 

如果SendOnBehalfOf收件人不是最後一個收件人,在最後一個收件人我得到一個錯誤,因爲「計「仍然是原來的數字,但實際上收件人已經少了一個。

我該如何處理這個問題,我想我必須重置伯爵,但是怎麼樣?

感謝 MAX

回答

0

因爲我真的不能重現的場景,我想一個快速的解決方法是某事像這樣

Dim i As Long 
Dim currentTotal As long 
currentTotal = newItem.Recipients.Count 
For i = 1 To newItem.Recipients.Count 
    If (i <= currentTotal) then 
     If newItem.Recipients(i).Name = newItem.SentOnBehalfOfName Then 
      newItem.Recipients.Remove i 
      currentTotal = currentTotal - 1 
     End If 
    'Exit the subroutine if i > total no. of recipients at the moment 
    Else 
     Exit Sub 
    End If 
Next i 
+0

感謝您的輸入,我使它相似,它的工作原理非常完美。唯一的區別是我重新啓動程序,如果我>當前總計,否則可能會發生並非所有項目都被檢查。看到在明年評論 – Max

+0

我的代碼尺寸我只要 重啓: 對於i = 1到newItem.Recipients.Count 如果我> newItem.Recipients.Count然後轉到重啓 如果newItem.Recipients(I)。 Name = newItem.SentOnBehalfOfName Then newItem.Recipients.Remove i Next i – Max

+0

很高興知道它有助於:) – sam092

0

計數向後刪除或移動時。

索引不斷變化,因此您跳過項目。 (與For Each循環相同的問題。)

For i = newItem.Recipients.Count to 1 step - 1 
If newItem.Recipients(i).Name = newItem.SentOnBehalfOfName Then 
    newItem.Recipients.Remove i 
End If 
Next i