Hakan需要一个宏来计算单词文档中的字符(不带空格)并突出显示第1000个字母。创建这样的宏非常简单-您只需要依次检查文档中的所有字符,并仅计算不是空格的字符。以下是一个简单的小宏,它可以完成此操作:

Sub CountThousands1()

Dim J As Long     Dim X As Integer

X = 0     With ActiveDocument         For J = 1 To .Characters.Count             If .Characters(J) <> " " Then X = X + 1             If X = 1000 Then                 .Characters(J).Select                 Selection.Range.HighlightColorIndex = wdYellow                 X = 0                 Beep             End If         Next J     End With End Sub

宏很简单;它检查了Characters集合,该集合包含文档中的所有单个字符。宏的问题在于它很慢-非常慢。 Word以这种方式检查单个字符并不是十分有效。 (似乎每次您引用Characters集合的成员时,Word都需要从文档开头重新检查所有字符。)

另一种方法是简单地单步浏览文档,扩展选择范围,直到得到1000个非空格字符。

Sub CountThousands2()

Dim X As Integer     Dim sRaw As String     Dim sProc As String          Selection.MoveRight Unit:=wdCharacter, Count:=1000, Extend:=wdExtend     While Len(Selection) = 1000         sRaw = Selection         sProc = Replace(sRaw, " ", "")

X = 1000 - Len(sProc)

While X > 0             Selection.MoveRight Unit:=wdCharacter, Count:=X, Extend:=wdExtend             sRaw = Selection             sProc = Replace(sRaw, " ", "")

X = 1000 - Len(sProc)

Wend         Selection.Collapse Direction:=wdCollapseEnd         Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend         Selection.Range.HighlightColorIndex = wdYellow         Selection.Collapse Direction:=wdCollapseEnd         Selection.MoveRight Unit:=wdCharacter, Count:=1000, Extend:=wdExtend     Wend End Sub

从插入点在文档的开头开始此宏。宏然后捕获一千个字符,将该选择分配给变量(sRaw),创建一个变量,该变量将所有空格都从变量(sProc)中删除,然后计算sProc的长度。如果小于1,000,则选择范围会扩展,但会缩短很多字符,重复此过程。当所选内容包含1,000个非空格字符时,将设置突出显示,并且宏继续到下一个字符块。

注意:

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

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

(Microsoft Word是世界上最流行的文字处理软件。)本技巧(7871)适用于Microsoft Word 2007、2010、2013、2016、2019和Office 365中的Word。 Word的旧菜单界面在这里: