从全部回复中删除SendOnBehalfOf收件人

时间:2013-10-04 09:42:24

标签: outlook-vba

我正在使用多个帐户,并经常代表其他帐户发送邮件。使用“全部回复”时,我会将副本发送到我发送的帐户。

为了防止这种情况,我在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不是最后一个收件人,则在最后一个收件人上收到错误,因为“Count”仍然在原始号码上,但实际上收件人已经少了一个。

我怎么能处理这个问题,我想我必须重置Count,但是怎么办?

由于 MAX

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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