David是一位作家,他经常使用Word的拼写,样式和语法检查器。有时,他发现Word的纠正语法建议很不好,他学会了忽略它们。他遇到的一件事是在对话中使用引号。

单词无法识别David是否在句子的结尾或开头都留下了引号。他记得几年前使用过一个文字处理程序,该程序在您的文档上留下绿色的引号来表示缺少引号。他想知道是否可以使用Word识别丢失的引号。

没有办法在Word中本地执行此操作。原因可能归结为以下事实:几乎不可能确定报价应在何处开始和结束。例如,如果您有一个包含四个句子的段落,并且在该段落中的某处放置了引号,则Word如何确定该标记是指定引号的开头还是结尾?如果是开始,Word将如何知道结束标记应该在句子的末尾,第二个句子的末尾还是段落的末尾? (如果引号是结束引号,则会出现相同的难题,但是放置位置的困惑程度从左到右而不是向右。)

将这种潜在的混淆与结束引号甚至不在当前段落中的事实结合在一起-当被标记的对话框实际上结束时,它可能在后面的段落的结尾。

但是,您可以开发一个宏,该宏至少可以为您做一些基本检查。下面的宏跳转到文档的开头并搜索第一个引号。然后,它将检查从该字符到该段结尾的所有内容。如果您使用的是非智能引号,则基本上会检查引号是否偶数。如果您使用的是智能引号,则它将检查每个起始引号是否有结尾引号。如果发现任一条件为假,则突出显示文本。

Sub MarkUnevenQuotes()

Dim sRaw As String     Dim iNorm As Integer     Dim iSmart As Integer     Dim J As Long

Selection.HomeKey Unit:=wdStory     Application.ScreenUpdating = False     Selection.Find.ClearFormatting     With Selection.Find         .Text = """"

.Replacement.Text = ""

.Forward = True         .Wrap = wdFindStop         .Format = True         .MatchCase = False         .MatchWholeWord = False         .MatchWildcards = False         .MatchSoundsLike = False         .MatchAllWordForms = False     End With     Selection.Find.Execute

While Selection.Find.Found         Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend         Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend         sRaw = Selection.Text         iNorm = 0         iSmart = 0         For J = 1 To Len(sRaw)

If Mid(sRaw, J, 1) = Chr(34) Then                 If iNorm > 0 Then                     iNorm = iNorm - 1                 Else                     iNorm = iNorm + 1                 End If             End If             If Mid(sRaw, J, 1) = Chr(147) Then                 iSmart = iSmart + 1             End If             If Mid(sRaw, J, 1) = Chr(148) Then                 iSmart = iSmart - 1             End If         Next J         If iNorm > 0 Or iSmart > 0 Then             Selection.Range.HighlightColorIndex = wdYellow         End If         Selection.Collapse Direction:=wdCollapseEnd         Selection.Find.Execute     Wend     Selection.HomeKey Unit:=wdStory     Application.ScreenUpdating = True End Sub

完成宏后,如果需要对它们进行视觉检查,最终得到的是一堆突出显示的文本选择。但是,该宏将找不到在第一个引号所在的段落之外的结尾引号。

注意:

如果您想知道如何使用此页面(或_WordTips_网站上的任何其他页面)上描述的宏,我准备了一个包含有用信息的特殊页面。

链接:/ wordribbon-WordTipsMacros [点击此处在新的浏览器标签中打开该特殊页面]。

_WordTips_是您进行经济有效的Microsoft Word培训的来源。

(Microsoft Word是世界上最流行的文字处理软件。)本技巧(13293)适用于Microsoft Word 2007、2010、2013、2016和Office 365中的Word。