2015-12-07 22 views
0

如果我选择多封电子邮件,子版本将删除最后一封电子邮件以外的所有电子邮件,然后发出错误消息。无法删除最后一封电子邮件

如果我选择一个项目,它将直接进入错误。

Private Sub CommandButton8_Click() 
For i = Application.ActiveExplorer.Selection.Count To 1 Step -1 
' https://msdn.microsoft.com/en-us/library/office/ff863343.aspx 
    Dim email As Outlook.MailItem 
    Set email = Application.ActiveExplorer.Selection.Item(i) 
    email.Delete 
Next 
End Sub 

Error -2147352567 (80020009) Outlook项目不能被删除(从荷兰翻译)

+0

你要使我们查找错误号?它的信息是什么? –

+0

错误提示:outlook项目无法删除(荷兰语翻译) – user2815681

+0

错误没有其他内容了吗?没有解释为什么它不能被删除? –

回答

0

阿尔多了一个有效点

打开预览窗格使得它的工作

Private Sub CommandButton8_Click() 
On Error Resume Next 

' turn off preview plane to prevent error 
Application.ActiveExplorer.ShowPane olPreview, False 

For i = Application.ActiveExplorer.Selection.Count To 1 Step -1 

    If i = 1 Then 

    End If 

    Application.ActiveExplorer.Selection.Item(i).Delete 

Next 

Application.ActiveExplorer.ShowPane olPreview, True 

End Sub 
-1

,而无需任何测试(你不告诉我们你使用的是什么版本的Outlook),我猜你可以试试删除邮件项目,而不必明确地分配它们:

For i = Application.ActiveExplorer.Selection.Count To 1 Step -1 
    Application.ActiveExplorer.Selection.Item(i).Delete 
Next 

这还有一个更快执行的好处。在你的代码中,试图从选择中删除最后剩下的项目会引用变量email void,这可能是VBA不喜欢的。

+0

我测试了它,它只是给出了一个不同的错误:错误440在exaction outlook无法删除项目(翻译自荷兰) – user2815681

+0

你正在做的东西了。你能提供一些参考证明你的说法吗? “这可能是VBA不喜欢的东西”并没有做出正确的回答。事实是,你的代码和OP的代码在功能上是等价的。 –

+0

采取了点。除了上面提到的代码之外,还有一种可能性,即邮件项目在某个地方被打开,例如,显示在一个单独的窗口?这可能解释这个问题。我的建议确实没有。 – Aldo

相关问题