A Macro for Commonly Confused Words

 

A Macro For Commonly Confused Words

By C.K. MacLeod

Updated July 30, 2015

Thanks to Eliza Dee for suggesting a tweak that makes this macro even better (see the comments below for details)! The macro script has been updated.

Adverse or averse? Assent or ascent? English contains many words that are easily confused—words that sound the same, but have different meanings and spellings.

Tackle potential confusables when it's time to edit your writing. The macro below will highlight commonly confused words in just minutes. After you run the macro, check the highlighted words to see if you've used them correctly. Refer to this list to look up any words you're unsure of.

Tip for editors: use this macro to make potential confusables stand out during a first pass.

Quick Steps

  1. Copy and paste the macro into Word's VBA.
  2. Run the macro on your writing.
  3. Remove highlighting from words as you check them.

Sub Confusables()
' Highlights confusables
'
' Written by Roger Mortis, revised Subcortical, Jami Gold, C.K. MacLeod and Eliza Dee; word list, Commonly Confused Words by Oxford Dictionaries http://www.oxforddictionaries.com/words/commonly-confused-words
'
Dim range As range
Dim i As Long
Dim TargetList
TargetList = Array("accept", "except", "adverse", "averse", "advice", "advise", "affect", "effect", "aisle", "isle", "altogether", "all together", "along", "a long", "aloud", "allowed", "altar", "alter", "amoral", "immoral", "appraise", "apprise", "assent", "ascent", "aural", "oral", "awhile", "a while", "balmy", "barmy", "bare", "bear", "bated", "baited", "bazaar", "bizarre", "birth", "berth", "born", "borne", "bow", "bough", "break", "brake", "broach", "brooch", "canvas", "canvass", "censure", "censor", "cereal", "serial", "chord", "cord", "climactic", "climatic", "coarse", "course")
For i = 0 To UBound(TargetList)
Set range = ActiveDocument.range
With range.Find
.Text = TargetList(i)
.Format = True
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = True
Do While .Execute(Forward:=True) = True
range.HighlightColorIndex = wdViolet
Loop
End With
Next

Dim TargetList1
TargetList1 = Array("complacent", "complaisant", "complement", "compliment", "council", "counsel", "cue", "queue", "curb", "kerb", "currant", "current", "defuse", "diffuse", "desert", "dessert", "discreet", "discrete", "disinterested", "uninterested", "draught", "draft", "draw", "drawer", "duel", "dual", "elicit", "illicit", "ensure", "insure", "envelop", "envelope", "exercise", "exorcise", "fawn", "faun", "flair", "flare", "flaunt", "flout", "flounder", "founder", "forbear", "forebear", "forward", "foreword", "freeze", "frieze", "grisly", "grizzly", "hoard", "horde", "imply", "infer", "loathe", "loath")
For i = 0 To UBound(TargetList1)
Set range = ActiveDocument.range
With range.Find
.Text = TargetList1(i)
.Format = True
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = True
Do While .Execute(Forward:=True) = True
range.HighlightColorIndex = wdViolet
Loop
End With
Next

Dim TargetList2
TargetList2 = Array("lose", "loose", "meter", "metre", "militate", "mitigate", "palate", "palette", "pedal", "peddle", "poll", "pole", "pour", "pore", "practice", "practise", "prescribe", "proscribe", "principle", "principal", "sceptic", "septic", "sight", "site", "stationary", "stationery", "story", "storey", "titillate", "titivate", "tortuous", "torturous", "wreath", "wreathe")
For i = 0 To UBound(TargetList2)
Set range = ActiveDocument.range
With range.Find
.Text = TargetList2(i)
.Format = True
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = True
Do While .Execute(Forward:=True) = True
range.HighlightColorIndex = wdViolet
Loop
End With
Next
End Sub


After you've addressed each highlighted word, use Paul Beverley's free UnHighlight macro to remove highlights, one instance at a time.

Not sure what a macro is? See this post for an explanation.

Learn how to use macros with this free 20-minute macro course. You can run macros in Microsoft Word or WPS Writer (pro version).

*The lists of words in this macro are from the Oxford Dictionaries website.

Image by Dvortygirl

Make Your Writing Readable with the Plain Language Macro

Embraced by wordsby C.K. MacLeod

Do you write or edit nonfiction? If you do, you need to know that readers are time pressed.

One way to make the reading experience more accessible to readers is to find ten-dollar words in your writing and swap them out with simpler words that most readers will be able to read and understand. It’s best to write as clearly and as simply as you can.

The PlainLanguage macro below will, with a few keystrokes, highlight in dark blue all the words in your writing that are difficult* to read and understand. Consider replacing these words with the alternatives listed at plainlanguage.gov:

Plain language site

*The difficult words in the macro script have been taken from the word list at plainlanguage.gov.

Copy the macro below from Sub to End Sub and paste it into Word's Visual Basic Application (VBA).

Remember to use judgement with the results of any macro. This macro will highlight difficult words, but only you can decide if each word is helping or hindering the reader.

Not sure what a macro is? See this post for an explanation. Also, see the free 20-minute Macro Course on this blog. It’ll have you up in running with macros in Word in no time!


Sub PlainLanguage()

' Highlights complex words
'
' Written by Roger Mortis, revised by Subcortical, adapted by

'Jami Gold and further adapted by C.K. MacLeod; word list:

'Simple Words and Phrases by www.plainlanguage.gov

'http://www.plainlanguage.gov/howto/wordsuggestions/simplewords.cfm#cd
'
Dim range As range
Dim i As Long
Dim TargetList
TargetList = Array("/", "a number of", "accompany", "accomplish", "accorded", "accordingly", "accrue", "accurate", "additional", "address", "addressees", "addressees are requested", "adjacent to", "advantageous", "adversely impact on", "advise", "afford an opportunity", "aircraft", "allocate", "anticipate", "apparent", "appreciable", "appropriate", "approximate", "arrive onboard", "as a means of", "as prescribed by", "ascertain")
For i = 0 To UBound(TargetList)
Set range = ActiveDocument.range
With range.Find
.Text = TargetList(i)
.Format = True
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Do While .Execute(Forward:=True) = True
range.HighlightColorIndex = wdBlue
Loop
End With
Next

Dim TargetList1
TargetList1 = Array("assist", "assistance", "at the present time", "attain", "attempt", "basis", "be advised", "benefit", "by means of", "capability", "caveat", "close proximity", "combat environment", "combined", "commence", "comply with", "component", "comprise", "concerning", "consequently", "consolidate", "constitutes", "contains", "convene", "currently", "deem", "delete", "demonstrate")
For i = 0 To UBound(TargetList1)
Set range = ActiveDocument.range
With range.Find
.Text = TargetList1(i)
.Format = True
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Do While .Execute(Forward:=True) = True
range.HighlightColorIndex = wdBlue
Loop
End With
Next

Dim TargetList2
TargetList2 = Array("depart", "designate", "desire", "determine", "disclose", "discontinue", "disseminate", "due to the fact that", "during the period", "effect modifications", "elect", "eliminate", "employ", "encounter", "endeavor", "ensure", "enumerate", "equipments", "equitable", "establish", "etc.", "evidenced", "evident", "exhibit", "expedite", "expeditious", "expend", "expertise")
For i = 0 To UBound(TargetList2)
Set range = ActiveDocument.range
With range.Find
.Text = TargetList2(i)
.Format = True
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Do While .Execute(Forward:=True) = True
range.HighlightColorIndex = wdBlue
Loop
End With
Next

Dim TargetList3
TargetList3 = Array("expiration", "facilitate", "failed to", "feasible", "females", "finalize", "for a period of", "forfeit", "forward", "frequently", "function", "furnish", "has a requirement for", "herein", "heretofore", "herewith", "however", "identical", "identify", "immediately", "impacted", "implement", "in a timely manner", "in accordance with", "in addition", "in an effort to", "in as much as", "in lieu of")
For i = 0 To UBound(TargetList3)
Set range = ActiveDocument.range
With range.Find
.Text = TargetList3(i)
.Format = True
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Do While .Execute(Forward:=True) = True
range.HighlightColorIndex = wdBlue
Loop
End With
Next

Dim TargetList4
TargetList4 = Array("in order that", "in order to", "in regard to", "in relation to", "in the amount of", "in the event of", "in the near future", "in the process of", "in view of", "in view of the above", "inception", "incumbent upon", "indicate", "indication", "initial", "initiate", "inter alia", "interface", "interpose no objection", "is applicable to", "is authorized to", "is in consonance with", "is responsible for", "it appears", "it is", "it is essential", "it is requested", "liaison")
For i = 0 To UBound(TargetList4)
Set range = ActiveDocument.range
With range.Find
.Text = TargetList4(i)
.Format = True
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Do While .Execute(Forward:=True) = True
range.HighlightColorIndex = wdBlue
Loop
End With
Next

Dim TargetList5
TargetList5 = Array("limited number", "magnitude", "maintain", "maximum", "methodology", "minimize", "minimum", "modify", "monitor", "necessitate", "notify", "not later than", "notwithstanding", "numerous", "objective", "obligate", "observe", "operate", "optimum", "option", "parameters", "participate", "perform", "permit", "pertaining to", "portion", "possess", "practicable")
For i = 0 To UBound(TargetList5)
Set range = ActiveDocument.range
With range.Find
.Text = TargetList5(i)
.Format = True
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Do While .Execute(Forward:=True) = True
range.HighlightColorIndex = wdBlue
Loop
End With
Next

Dim TargetList6
TargetList6 = Array("preclude", "previous", "previously", "prior to", "prioritize", "proceed", "procure", "proficiency", "promulgate", "provide", "provided that", "provides guidance for", "purchase", "pursuant to", "reflect", "regarding", "relative to", "relocate", "remain", "remain", "remainder", "remuneration", "render", "represents", "request", "require", "requirement", "reside")
For i = 0 To UBound(TargetList6)
Set range = ActiveDocument.range
With range.Find
.Text = TargetList6(i)
.Format = True
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Do While .Execute(Forward:=True) = True
range.HighlightColorIndex = wdBlue
Loop
End With
Next

Dim TargetList7
TargetList7 = Array("retain", "said", "selection", "set forth in", "similar to", "solicit", "some", "state-of-the-art", "subject", "submit", "subsequent", "subsequently", "substantial", "successfully complete", "such", "sufficient", "take action to", "terminate", "the month of", "the undersigned", "the use of", "there are", "there is", "therefore", "therein", "thereof", "this activity", "time period")
For i = 0 To UBound(TargetList7)
Set range = ActiveDocument.range
With range.Find
.Text = TargetList7(i)
.Format = True
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Do While .Execute(Forward:=True) = True
range.HighlightColorIndex = wdBlue
Loop
End With
Next

Dim TargetList8
TargetList8 = Array("timely", "transmit", "type", "under the provisions of", "until such time as", "utilization", "utilize", "validate", "viable", "vice", "warrant", "whereas", "with reference to", "with the exception of", "witnessed", "your office")
For i = 0 To UBound(TargetList8)
Set range = ActiveDocument.range
With range.Find
.Text = TargetList8(i)
.Format = True
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Do While .Execute(Forward:=True) = True
range.HighlightColorIndex = wdBlue
Loop
End With
Next
End Sub


Image by Robbert van der Steeg

How to Ease Repetitive Strain Injury

By C.K. MacLeodGraffiti of words repeat again

Are you participating in NaNoWriMo? Is your wrist starting to ache and your fingers starting to tingle? If so, you could be experiencing early signs of repetitive strain injury.

You're not alone. I've gotten away with the same computer practices I've used for years, without a bodily complaint. Until now. Thankfully, it's not too late to develop new computer-healthy habits.

In dealing with RSI, it's important to do whatever you can to interrupt or reduce the actions that are causing you discomfort. Cycling through a variety of strategies on a daily basis can help. Here's what I’ve tried:

  • left-hand mousing (I typically mouse with my right hand—and yes, the first left-hand day was rough)
  • a new kind of mouse (to change my hand position)
  • a new way of mousing (on my pant leg—a lower hand position can ease strain)
  • a new keyboard, with a different configuration than my old one
  • keyboard shortcuts (to reduce mousing)
  • macros (to automate editing and proofreading tasks)
  • speech-recognition software (to reduce keyboarding and mousing)
  • writing in markdown (to prevent mousing for formatting operations)
  • frequent breaks (with the assistance of Workrave, a free RSI prevention app)
  • roller derby wrist guards (to temporarily immobilize my wrist and prevent further strain—yes, I play roller derby, and surprise! I sustain more injuries from my computer) — use with caution because, as my chiropractor pointed out, "mobility is better than immobility"
  • old-school technology (to reduce mousing)
  • hand exercises (thanks to J Washburn for this tip)
  • physiotherapy (thanks to Ahmed and Mike for sorting me out)
  • chiropractic (for a derby injury—but this will be my first stop if I have the misfortune of of sustaining a computer-related back injury)
  • rest

Disclaimer: I am not an authority on RSI—only a victim of it. But I did query an occupational therapist, a kinesiologist, and a physiotherapist, and they agreed that changing things up is a key to reducing strain. If you have pain in your wrist and fingers, your wisest course of action is to first consult with your physician, physiotherapist or chiropractor.

I suspect that the best way to deal with RSI is to prevent it. What are your RSI prevention strategies?

Image by Feral78

Showing vs. Telling Macro

by @CKMacLeod

9631208527_e38342509b_m

Most writers are familiar with the adage, show, don't tell. But sometimes it's tricky to determine when those telling instances have crept into your writing.

Editor Janice Hardy of Fiction University explains how telling happens and offers advice for how to turn telling into showing. She and Valerie Comer of To Write a Story suggest lists of words you should avoid to prevent instances of telling.

I've inserted some of Valerie Comer's and Janice Hardy's telling words into the macro script below so you can identify them in your own writing. I've also included some words of my own.

Loch Ness telling sample
TellingWords in action; writing sample by Carla Douglas, used with permission

Copy the TellingWords* macro, below, from Sub to End Sub and paste it into Word's Visual Basic Application (VBA). When you run the macro, it will hunt down and highlight those telling words so you can tell them, I mean, show them who's boss.


Sub TellingWords()
' Highlights telling words
'
'
' Written by Roger Mortis, revised by Subcortical, adapted by Jami Gold and tweaked by C.K. MacLeod; word list by Valerie Comer and Janice Hardy
'
Dim range As range
Dim i As Long
Dim TargetList
TargetList = Array("was", "were", "when", "as", "the sound of", "could see", "saw", "notice", "noticed", "noticing", "consider", "considered", "considering", "smell", "smelled", "heard", "felt", "tasted", "knew", "realize", "realized", "realizing", "think", "thought", "thinking", "believe", "believed", "believing", "wonder", "wondered", "wondering", "recognize", "recognized", "recognizing", "hope", "hoped", "hoping", "supposed", "pray", "prayed", "praying", "angrily")

For i = 0 To UBound(TargetList)

Set range = ActiveDocument.range
With range.Find
.Text = TargetList(i)
.Format = True
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Do While .Execute(Forward:=True) = True
range.HighlightColorIndex = wdPink
Loop
End With
Next
End Sub


Note: You need to use judgement with the results of any macro. This macro will highlight the telling words, but only you can decide if it's an instance of telling.

To figure out what to do with the words the macro highlights, refer to Janice Hardy's excellent show vs. tell posts. Also, this macro is a work in progress. Are there words I should include? Omit? Let me know in the comments section below.

Not sure what a macro is? See this post for an explanation. See also the videos for adding a macro and running a macro in Microsoft Word 2010.

What do you do with the highlighted words this macro finds? See Carla Douglas' post at the Beyond Paper Editing blog for suggestions.

 Image by Pete

*Karen Woodward calls this macro the AddWords macro because you can add any list of words that you want the macro to find. The first version of this macro was written by Roger Mortis, revised by Subcortical, appropriated for writing by Karen Woodward, tweaked byJami Gold, and further tweaked by me, making it a true community effort.

Hunt Down Adverbs with a Macro

by C.K. MacLeod

...the road to hell is paved with adverbs and I will shout it from the rooftops.

~Steven King

Adverb

Do you use -ly words in your writing? Do you use them with the dialogue tags he said and she said?

Example: "Who do you think you are?" she said arrogantly.

According to author Steven King, using adverbs in your writing, particularly with dialogue tags, can be a problem.

You can hunt down -ly adverbs with a macro. Karen Woodward has good multipurpose -ly macro, or you can insert your own list of -ly words in the macro script below (I've gotten you started). The Reading Teacher's Book of Lists, by Edward Bernard Fry et al. has a fabulous list of adverbs commonly used with dialogue tags.

Copy the macro from Sub to End Sub and paste it into Word's Visual Basic Application (VBA). Word will highlight all of the adverbs in bright green.


Sub lyWords()
'
' Highlights -ly words used in tags
'
' Written by Roger Mortis, revised by Subcortical, adapted by Jami Gold and tweaked by C.K. MacLeod
'
Dim range As range
Dim i As Long
Dim TargetList
TargetList = Array( "angrily", "cautiously", "happily", "sadly",  "unhappily")

For i = 0 To UBound(TargetList)

Set range = ActiveDocument.range
With range.Find
.Text = TargetList(i)
.Format = True
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Do While .Execute(Forward:=True) = True
range.HighlightColorIndex = wdBrightGreen
Loop
End With
Next
End Sub


Remember to use judgement with the results of any macro. This macro will highlight -ly words, but only you can decide if each word is helping or hindering your writing.

Not sure what a macro is? See this post for an explanation. See also the videos for adding a macro and running a macro in Microsoft Word 2010.

What do you do with the highlighted words this macro finds? See Carla Douglas' post at the Beyond Paper Editing blog for suggestions.

Image by Quinn Dombrowski

Find Passive Words in Your Writing

Verb, pure verb

Passive words can make your writing dull. Use this macro to find passive words so you can replace them with strong, active words. Word will highlight passive words in bright green.

Copy the macro from Sub to End Sub and paste it into Microsoft Word's Visual Basic Application (VBA). This free 20-minute macro course will show you how.


Sub PassiveWords()

' Highlights passive words

' Written by Roger Mortis, revised by Subcortical, adapted by Jami Gold and tweaked by C.K. MacLeod; words selected from Ryan Macklin's passive words list at http://ryanmacklin.com/2012/05/passive-voice-words/

Dim range As range
Dim i As Long
Dim TargetList
TargetList = Array("be", "being", "been", "am", "is", "are", "was", "were", "has", "have", "had", "do", "did", "does", "can", "could", "shall", "should", "will", "would", "might", "must", "may")

For i = 0 To UBound(TargetList)

Set range = ActiveDocument.range
With range.Find
.Text = TargetList(i)
.Format = True
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Do While .Execute(Forward:=True) = True
range.HighlightColorIndex = wdBrightGreen
Loop
End With
Next

End Sub


Remember to use judgement with the results of any macro. This macro will highlight passive words, but only you can decide if each word is helping or hindering your writing.

Image by Rebecca Siegel