Spoke too soon.
I didn't notice that when I replaced the one holenote with another, the drawing still updated to the new holenote which means I effectively did nothing.
So my next though would be to save the formatted text in a string, perform the switch and then replace the formatted text with what I had saved. But for some reason it wouldn't reformat, it would convert it to only text.
So after about 30 minutes of head-scratching, I found that when I exported the formatted text from the holethreadnote, it exported it incorrectly (this would be Inventor's error as I compared what I was inputting to what Inventor exported and they were identical).
Inventor exports this:
<QuantityNote/><StyleOverride Font='AIGDT' FontSize='0.2032'>n</StyleOverride><StyleOverride Font='Tahoma' FontSize='0.2032'><HoleProperty HolePropertyID='kHoleDiameterHoleProperty' SetTolerances='False'></HoleProperty> </StyleOverride><StyleOverride Font='AIGDT' FontSize='0.2032'>x</StyleOverride><StyleOverride Font='Tahoma' FontSize='0.2032'> <HoleProperty HolePropertyID='kHoleDepthHoleProperty'False'></HoleProperty></StyleOverride>
The difference is that on the second hole property, the string reads:
HolePropertyID='kHoleDepthHoleProperty'False'>
But the correct syntax is
HolePropertyID='kHoleDepthHoleProperty' SetTolerances='False'>
So I had to create a makeshift replace command which in all reality winds up being a bit more of a hack job than the undo command because it assumes this is the only error.
Dim SavedNote As String = oDim.FormattedHoleThreadNote
oNote.FormattedHoleThreadNote = "<QuantityNote/>"
Dim QTY As Integer = Replace(oNote.Text.Text, "X", "")
SavedNote = Replace(SavedNote, "Property'False", "Property' SetTolerances='False")
oNote.FormattedHoleThreadNote = SavedNote
So long story short, @clutsa, your method, although slightly sacrilegious, is still a better method than what I came up with. I stand by my statement that this could be resolved by Inventor not exporting incorrect formatted notes in the first place.