The Problem (Q-score 10, ranked #2nd of 3 in the Outlook VBA archive)
The scenario as originally posted in 2009
The task is to apply strikeout to current font in selected text area.
The difficulty is that Outlook doesn’t support recording macros on the fly – it wants code to be written by hand.
For example, the following simple code:
Selection.Font.Strikethrough = True
works for Word, but gives an error for Outlook:
Run-time error '424':
Object required
Why community consensus is tight on this one
Across 3 Outlook VBA entries in the archive, the accepted answer here holds elite answer (top 10 %%) status — meaning voters are unusually aligned on the right fix.
The Verified Solution — elite answer (top 10 %%) (+13)
10-line Outlook VBA pattern (copy-ready)
This assumes that you also have Word installed on your box. If so, you can access most of the Word OM from the Outlook VBE without referencing Word by using the ActiveInspector.WordEditor object.
Sub StrikeThroughinMailItem()
Dim objOL As Application
Dim objDoc As Object
Dim objSel As Object
Set objOL = Application
Set objDoc = objOL.ActiveInspector.WordEditor
Set objSel = objDoc.Windows(1).Selection
objSel.Font.Strikethrough = True
End Sub
When to Use It — vintage (14+ years old, pre-2013)
A top-10 Outlook VBA pattern — why it still holds up
Ranks #2nd of 3 in the Outlook VBA archive. The only pattern ranked immediately above it is “Regular Expression Rules in Outlook 2007?” — compare both if you’re choosing between approaches.
What changed between 2009 and 2026
The answer is 17 years old. The Outlook VBA object model has been stable across Office 2013, 2016, 2019, 2021, 365, and 2024/2026 LTSC, so the pattern still compiles. Changes that might affect you: 64-bit API declarations (use PtrSafe), blocked macros in downloaded files (Mark-of-the-Web), and the shift toward Office Scripts for web-first workflows.