1

我正在使用多个帐户,并且经常代表其他帐户发送。使用“回复所有人”时,我将向我发送邮件的帐户发送一份副本。

为了防止这种情况,我在 newItem_Open - sub 中有以下代码:

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-recipient 不是最后一个收件人,那么在最后一个收件人上我会收到一个错误,因为“计数”仍在原始号码上,但实际上收件人已经少了一个。

我该如何处理这个问题,我想我必须重置计数,但是如何处理呢?

谢谢 MAX

4

2 回答 2

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
于 2013-10-04T10:10:06.803 回答
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
于 2013-10-26T14:09:20.817 回答