Move message skips messages when looping through mailbox

Status
Not open for further replies.
J

John_Ba

I'm trying to loop through a mailbox and display a form that chooses whether

to move the message to a different folder and which one to move it to.

For testing I have 2 messages in the mailbox. The problem is that if I choose

to move the firts message then the loop ignores the second message, however

if I don't move the first message then the second message is displayed.

If I run in debug mode with a breakpoint then the code works as expected.

Anybody have a good idea?

Set myOlApp = CreateObject("Outlook.Application")

Set myNameSpace = myOlApp.GetNamespace("MAPI")

Set myMailbox = myNameSpace.folders("Mailbox - RSP SWE DMSII Support")

Set myInbox = myMailbox.folders("Inbox")

'

Set AgentRS = OpenRS(myConn, "SELECT * FROM AgentsColleagues('" & USERCK

& "') ORDER BY Name")

Set AgentForm = New GetAgent

AgentForm.SetAgentList = AgentRS

AgentForm.SetFolderList = myMailbox

'

For Each myItem In myInbox.Items

myItem.Display

' Debug.Print myItem.UserProperties("Owned by")

AgentForm.Init = -1

AgentForm.Show

If AgentForm.AgentList.ListIndex > 0 Then

Set Owner = myItem.UserProperties.Add("Owned by", olText, True)

Owner.Value = AgentForm.AgentList

End If

Set Action = myItem.UserProperties.Add("Action", olText, True)

Action.Value = "NEW"

If AgentForm.FolderList.ListIndex > 0 Then

destFolder = AgentForm.FolderList.List(AgentForm.FolderList.

ListIndex)

myItem.Move (myMailbox.folders(destFolder))

Else

myItem.Close olSave

End If

DoEvents

Next myItem

CloseRS AgentRS

Unload AgentForm

Set AgentForm = Nothing
 
K

Ken Slovak - [MVP - Outlook]

When you are removing items from a collection never use For Each or count up

For loops since you are relying on an index that you are altering as you

remove the items. Use a count down For loop or a Do loop instead:

For i = myInbox.Items.Count To 1 Step -1

myItem = myInbox.Items(i)

' etc.

"John_Ba" <u54813@uwe> wrote in message news:9c31bd035d3e7@uwe...
> I'm trying to loop through a mailbox and display a form that chooses
> whether
> to move the message to a different folder and which one to move it to.
> For testing I have 2 messages in the mailbox. The problem is that if I
> choose
> to move the firts message then the loop ignores the second message,
> however
> if I don't move the first message then the second message is displayed.
> If I run in debug mode with a breakpoint then the code works as expected.
> Anybody have a good idea?

> Set myOlApp = CreateObject("Outlook.Application")
> Set myNameSpace = myOlApp.GetNamespace("MAPI")
> Set myMailbox = myNameSpace.folders("Mailbox - RSP SWE DMSII Support")
> Set myInbox = myMailbox.folders("Inbox")
> '
> Set AgentRS = OpenRS(myConn, "SELECT * FROM AgentsColleagues('" &
> USERCK
> & "') ORDER BY Name")
> Set AgentForm = New GetAgent
> AgentForm.SetAgentList = AgentRS
> AgentForm.SetFolderList = myMailbox
> '
> For Each myItem In myInbox.Items
> myItem.Display
> ' Debug.Print myItem.UserProperties("Owned by")
> AgentForm.Init = -1
> AgentForm.Show

> If AgentForm.AgentList.ListIndex > 0 Then
> Set Owner = myItem.UserProperties.Add("Owned by", olText, True)
> Owner.Value = AgentForm.AgentList
> End If

> Set Action = myItem.UserProperties.Add("Action", olText, True)
> Action.Value = "NEW"

> If AgentForm.FolderList.ListIndex > 0 Then
> destFolder = AgentForm.FolderList.List(AgentForm.FolderList.
> ListIndex)
> myItem.Move (myMailbox.folders(destFolder))
> Else
> myItem.Close olSave
> End If
> DoEvents
> Next myItem
> CloseRS AgentRS

> Unload AgentForm
> Set AgentForm = Nothing
>
 
J

John_Ba

Ken,

Thanks very much, that was very helpfull. Pity it doesn't occur in more

programming examples of looping through items. I searched the web and MSDN

looking for a way to do this.
- wrote:
> When you are removing items from a collection never use For Each or count up
> For loops since you are relying on an index that you are altering as you
> remove the items. Use a count down For loop or a Do loop instead:

> For i = myInbox.Items.Count To 1 Step -1
> myItem = myInbox.Items(i)
> ' etc.
>
> > I'm trying to loop through a mailbox and display a form that chooses
> > whether

> [quoted text clipped - 46 lines]
> > Unload AgentForm
> > Set AgentForm = Nothing


 
Status
Not open for further replies.
Similar threads
Thread starter Title Forum Replies Date
T Macro to move reply and original message to folder Outlook VBA and Custom Forms 6
I Automating message move between folders Outlook VBA and Custom Forms 0
E Search for folder by key in subject then move new message to related folder Outlook VBA and Custom Forms 1
mrmmickle1 UserProperties VBA to move message to another folder Outlook VBA and Custom Forms 7
T What code to use to move the custom field values to message body when sending e-mail ? Outlook VBA and Custom Forms 8
M Automatically move Outlook message to the specific folder when click on reply to all Using Outlook 4
M Error message: "Cannot move the items..." Using Outlook 2
M Outlook 2010 IMAP account message move behavior Using Outlook 15
mikolajek Outlook 2013 IMAP actions (message move / delete etc.) significantly delayed Using Outlook 0
D Error message - Cannot move the items.... Using Outlook 1
H move to folder rule corrupts message Using Outlook 3
A How do I move a message to a folder after forwarding ? Outlook VBA and Custom Forms 6
A How to catch Message Move Event. Outlook VBA and Custom Forms 10
F VBA to move email from Non Default folder to Sub folders as per details given in excel file Outlook VBA and Custom Forms 8
F Excel VBA to move mails for outlook 365 on secondary mail account Outlook VBA and Custom Forms 1
J Dopey move - deleted profile Using Outlook 1
GregS Outlook 2016 Move Outlook to new computer? Using Outlook 4
witzker Macro to move @domain.xx of a Spammail to Blacklist in Outlook 2019 Outlook VBA and Custom Forms 7
G Move tasks up/down todo list by VBA Outlook VBA and Custom Forms 1
S Macro to move “Re:” & “FWD:” email recieved the shared inbox to a subfolder in outlook Outlook VBA and Custom Forms 0
S Outlook Macro to move reply mail based on the key word in the subjectline Outlook VBA and Custom Forms 0
D Move Email with Attachment to Folder Outlook VBA and Custom Forms 3
Eike Move mails via macro triggered by the click of a button? Outlook VBA and Custom Forms 0
G Cannot Move Autocomplete File to New Computer Using Outlook 15
M Move to Folder Using Outlook 1
P Move emails between 2 mailboxes. Using Outlook 0
C Copy Move item won't work Outlook VBA and Custom Forms 2
N Macro to move all recipients to CC while replying Outlook VBA and Custom Forms 0
Commodore Move turns into "copy" Using Outlook 3
R List folders in a combo box + select folder + move emails from inbox to that folder + reply to that email Outlook VBA and Custom Forms 1
Jennifer Murphy Ctrl+Tab sometimes will not move through text a word at a time Using Outlook 1
V Outlook 2016 will not move emails in search results Using Outlook 4
M move to iCloud not working in outlook calendar Using Outlook 12
A Create date folder and move messages daily Outlook VBA and Custom Forms 1
Commodore Folders always closed in move/copy items dialog box Using Outlook 3
C Move Outlook 2007 to new PC with Outlook 365 Using Outlook 3
C Can't move folder, the folder is full Using Outlook 0
Nadine Rule to move attachments with specific name Outlook VBA and Custom Forms 1
A Move email items based on a list of email addresses Outlook VBA and Custom Forms 40
T Move calendar invites to new calendar Using Outlook 5
O Rule to move (specific) messages from Sent folder to Specific folder Using Outlook 1
K Outlook Rules: Move a Copy Using Outlook 4
K VBA BeforeItemMove event create rule to always move to its folder. Outlook VBA and Custom Forms 4
N Move emails of same conversation to same subfolder Using Outlook 6
P when i move inbox mails to another folder in outlook the mail disappears Using Outlook 1
Peter H Williams How to Move Mail item after processing Outlook VBA and Custom Forms 5
D Move Emails between Folders in Separate Mailbox Outlook VBA and Custom Forms 12
I Outlook 2013 Any way to move .OST file to new system? Using Outlook.com accounts in Outlook 5
O On click,I want to change subject line of selected mail and then reply to particular email and move Using Outlook 3
F "Move to" O365 feature to Outlook client via VBA Outlook VBA and Custom Forms 4

Similar threads

Top