Try something like this:
Sub Reset_Categories()
Dim fldrItems As Items
Dim itm As Object
Dim i As Long
Set fldrItems = Session.GetDefaultFolder(olFolderInbox).Items
For Each itm In fldrItems
If itm.Categories = "1" Then
itm.Categories = "Complete"
itm.Save
End If
Next itm
For i = 2 To 10
'Debug.Print "Processing old category: " & i
For Each itm In fldrItems
If itm.Categories = CStr(i) Then
'Debug.Print itm.Subject
itm.Categories = CStr(i - 1)
'Debug.Print " - " & i & " changed to " & i - 1
itm.Save
End If
Next itm
Next I
ExitRoutine:
Set fldrItems = Nothing
Set itm = Nothing
'Debug.Print "Done."
End Sub
You can see what is happening by stepping through the code. http://www.cpearson.com/excel/DebuggingVBA.aspx
You will note it is inefficient, processing every item 10 times. See here http://www.jpsoftwaretech.com/use-fi...outlook-macros for a way to target the items with the category you want to update.