![]() |
Deleting Mail Items - Code
The following snippet of VBA code (Outlook 2003) is used to selectively
delete mail items from a selected mail folder. where the mail item subject matches a predefined string (MailSubject). This code works great except it fails to delete the last item. If there are 10 items matching it will delete 9 but leave one behind. If there is only 1 it fails to delete it. If I step the code in the debugger it works! What could be causing this? For Each objItem In objFolder.Items ' delete the item from the folder If Left(objItem.Subject, mSubLen) = MailSubject Then objItem.Delete End If Next |
Deleting Mail Items - Code
Don't use For Each loops or up counting For loops for deleting items from a
collection. Use For loops that count down (Step -1) or use Do loops that test for no items left. -- Ken Slovak [MVP - Outlook] http://www.slovaktech.com Author: Professional Programming Outlook 2007. Reminder Manager, Extended Reminders, Attachment Options. http://www.slovaktech.com/products.htm "Nigel RS" wrote in message ... The following snippet of VBA code (Outlook 2003) is used to selectively delete mail items from a selected mail folder. where the mail item subject matches a predefined string (MailSubject). This code works great except it fails to delete the last item. If there are 10 items matching it will delete 9 but leave one behind. If there is only 1 it fails to delete it. If I step the code in the debugger it works! What could be causing this? For Each objItem In objFolder.Items ' delete the item from the folder If Left(objItem.Subject, mSubLen) = MailSubject Then objItem.Delete End If Next |
Deleting Mail Items - Code
Thanks Ken, I guess it is similar to deleting rows in Excel. I will change
it to a down counter. Cheers "Ken Slovak - [MVP - Outlook]" wrote: Don't use For Each loops or up counting For loops for deleting items from a collection. Use For loops that count down (Step -1) or use Do loops that test for no items left. -- Ken Slovak [MVP - Outlook] http://www.slovaktech.com Author: Professional Programming Outlook 2007. Reminder Manager, Extended Reminders, Attachment Options. http://www.slovaktech.com/products.htm "Nigel RS" wrote in message ... The following snippet of VBA code (Outlook 2003) is used to selectively delete mail items from a selected mail folder. where the mail item subject matches a predefined string (MailSubject). This code works great except it fails to delete the last item. If there are 10 items matching it will delete 9 but leave one behind. If there is only 1 it fails to delete it. If I step the code in the debugger it works! What could be causing this? For Each objItem In objFolder.Items ' delete the item from the folder If Left(objItem.Subject, mSubLen) = MailSubject Then objItem.Delete End If Next |
Deleting Mail Items - Code
Hi Ken
I modified my code as suggested by using a count down structure, however it still does not delete the last item that meets the criteria !! Stepping through the code the test is applied and the delete step is run, but the last mailitem remains in the folder! Any ideas? For iItem = objFolder.Items.Count To 1 Step -1 Set objItem = objFolder.Items(iItem) ' delete the item from the inbox If Left(objItem.Subject, mSubLen) = MailSubject Then objItem.Delete End If Next iItem "Ken Slovak - [MVP - Outlook]" wrote: Don't use For Each loops or up counting For loops for deleting items from a collection. Use For loops that count down (Step -1) or use Do loops that test for no items left. -- Ken Slovak [MVP - Outlook] http://www.slovaktech.com Author: Professional Programming Outlook 2007. Reminder Manager, Extended Reminders, Attachment Options. http://www.slovaktech.com/products.htm "Nigel RS" wrote in message ... The following snippet of VBA code (Outlook 2003) is used to selectively delete mail items from a selected mail folder. where the mail item subject matches a predefined string (MailSubject). This code works great except it fails to delete the last item. If there are 10 items matching it will delete 9 but leave one behind. If there is only 1 it fails to delete it. If I step the code in the debugger it works! What could be causing this? For Each objItem In objFolder.Items ' delete the item from the folder If Left(objItem.Subject, mSubLen) = MailSubject Then objItem.Delete End If Next |
Deleting Mail Items - Code
See if adding a DoEvents after you delete the item in the loop helps with
that. -- Ken Slovak [MVP - Outlook] http://www.slovaktech.com Author: Professional Programming Outlook 2007. Reminder Manager, Extended Reminders, Attachment Options. http://www.slovaktech.com/products.htm "Nigel RS" wrote in message ... Hi Ken I modified my code as suggested by using a count down structure, however it still does not delete the last item that meets the criteria !! Stepping through the code the test is applied and the delete step is run, but the last mailitem remains in the folder! Any ideas? For iItem = objFolder.Items.Count To 1 Step -1 Set objItem = objFolder.Items(iItem) ' delete the item from the inbox If Left(objItem.Subject, mSubLen) = MailSubject Then objItem.Delete End If Next iItem |
Deleting Mail Items - Code
Nigel RS wrote:
For iItem = objFolder.Items.Count To 1 Step -1 try .. For iItem = objFolder.Items.Count To 0 Step -1 |
Deleting Mail Items - Code
Outlook collections always run from 1 to number, not from 0.
-- Ken Slovak [MVP - Outlook] http://www.slovaktech.com Author: Professional Programming Outlook 2007. Reminder Manager, Extended Reminders, Attachment Options. http://www.slovaktech.com/products.htm "Penny" wrote in message m... Nigel RS wrote: For iItem = objFolder.Items.Count To 1 Step -1 try .. For iItem = objFolder.Items.Count To 0 Step -1 |
Deleting Mail Items - Code
OK, then you might have to add a test after the loop to see if there's still
any items left in that collection and if so try either getting that last item as an object item and calling its Delete() method again or using Items.Remove(1) and see if either of those works. In some versions of Outlook removing the last item in a collection using Delete() doesn't work. That might be what you're running into here. -- Ken Slovak [MVP - Outlook] http://www.slovaktech.com Author: Professional Programming Outlook 2007. Reminder Manager, Extended Reminders, Attachment Options. http://www.slovaktech.com/products.htm "Nigel" wrote in message ... Hi Ken Sorry for delay, I tried adding DoEvents without success. -- Regards, Nigel |
All times are GMT +1. The time now is 03:37 PM. |
Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 2.4.0
Copyright ©2004-2006 OutlookBanter.com