I wish to get the details of what has been changed in a MailItem.

I have been able to get ItemChange to trigger based upon Application.Session.Folders("TargetFolder") to a variable as such:
`Private Sub olInvMbxItems_ItemChange(ByVal X As Object)`.

I would like to know the property changed in `X`. If I pass `X` to an global variable for `Private Sub X_PropertyChange(ByVal x As Object)`, it will miss the first iteration as `X` was not initialized on the first pass of `ItemChange`.

How can I monitor a folder of MailItems to detect Category changes. Whilst ItemChange does this, it gives duplication of action, if I look for specific categories, as many changes trigger ItemChange as mentioned here: 

[Handle ItemChange event when outlook appointments are dismissed](https://stackoverflow.com/questions/35186534/handle-itemchange-event-when-outlook-appointments-are-dismissed)

and here:

[Outlook Macro that will copy an email I flag and put it in a folder](https://stackoverflow.com/questions/36022595/outlook-macro-that-will-copy-an-email-i-flag-and-put-it-in-a-folder/)

The binary flag for the UserProperties in the second item will not function as it is not a one-off event.

[Outlook Events VBA](https://stackoverflow.com/questions/42906549/outlook-events-vba) says to use PropertyChange but doesn't provide a technique for implementation.