Put a breakpoint inside your routine
CheckForReplacementText
and examine what is returned by
For Each replacement In replacements(checkWord)
replacements(checkWord)
returns a single String - first time around it returns "a bad advice". So that
For Each
loop is looping around the individual characters in that string, not as you believed, each of the entries in the Dictionary.
You also have some issues around how you are keeping track of which suggestions you have already made ... not sure why you think recursion is necessary, but if you are going to use it remember to increment
nextCheckIndex
appropriately
[EDIT] - how
checkWord
should be added to the context menu
With ReplaceMenu.Items.Add(replacements(checkWord))
.AutoToolTip = True
.ToolTipText = replacements(checkWord)
End With