【发布时间】:2016-04-26 10:37:41
【问题描述】:
我有以下代码可以自动删除超过两个月的电子邮件:
Sub RemoveAutomaticItemsInDeletedItems()
If MsgBox("Delete items from from Deleted Items folder ?", vbYesNo, "Confirm") = vbYes Then
Dim oDeletedItems As Outlook.Folder
Dim obj As Outlook.MailItem
Dim i As Integer
'Obtain a reference to deleted items folder
Set oDeletedItems = Application.Session.GetDefaultFolder(olFolderDeletedItems)
For i = 1 To oDeletedItems.Items.Count - 1
If oDeletedItems.Items(i).Class = olMail Then
Set obj = oDeletedItems.Items.Item(i)
If obj.ReceivedTime <= DateAdd("m", -2, Now) Then
'Deleting them
Debug.Print obj.SenderEmailAddress
'Debug.Print obj.Subject
obj.Delete
End If
End If
Next
MsgBox "Items have been deleted"
End If
End Sub
但是,错误:
Array index out of bounds
被连续调用就行了:
If oDeletedItems.Items(i).Class = olMail Then
使用 Debug.Print 我查看了上面的代码行:oDeletedItems.Items.Count - 1,计数为 1889,因此数组中有元素。
如果数组中有对象,为什么还会出现这个错误?
【问题讨论】:
标签: arrays vba outlook indexoutofboundsexception