2010-04-20 138 views
1

我正在MS Word中编写一个宏,它应该在文档中查找所有突出显示的文本并对每个文本执行一些操作。我正在计划一个循环来执行搜索和操作部分,并且这部分代码没有问题。
但我不知道如何找到我需要的迭代次数。有没有办法确定VBA中的高亮数量?
非常感谢提前。如何查找MS Word文档中突出显示的文本块的数量

回答

2
With ActiveDocument.Range.Find 
    .Highlight = True 
    While .Execute 
    Debug.Print .Parent.Text 
    Wend 
End With 

没有必要预先计算匹配的数量。您可以在循环中执行搜索,一旦没有更多匹配,它就会停止。

请确保您将搜索应用到文档的右侧部分。我使用ActiveDocument.Range,但任何Range对象都会执行此操作。也许更具体的更适合你的情况。

此外,检查出的Find对象的许多其他属性,并将其设置为合理值,这比用默认值会(没有人会记得所有选项都默认,加上Find对象可能已经设好了通过一些较早的搜索)。

+0

谢谢你的男人。它像奇迹一样工作。但是,如果它不要求太多,你是否也可以暗示是否可以找到数字?在进入循环之前,您会看到宏执行其他编辑,它将是一个很好的功能,可以检查文档是否已经被处理,所以如果用户调用宏两次,它会检测到它已经被执行一次并退出。如果我可以找到高光数量,这将工作,因为宏从大块中删除高亮标记,并在完成后没有剩余。 – 2010-04-20 19:43:59

+0

@Majid:如果在第一遍之后没有高亮,那么循环甚至不会在第二次尝试中运行,因为没有高亮(即Execute()立即返回False)。 ;)或者,也许我不明白你想要什么? – Tomalak 2010-04-20 21:03:47

+0

是的,循环内的代码不会在第二次执行时运行,但是我会在循环之前执行代码。这就是为什么我需要检查文档中是否有亮点。我会把这个检查作为宏的第一件事。如果没有办法直接访问这个数字,我想,我需要两个嵌套的while循环? – 2010-04-21 09:29:19

相关问题