word vba-如何在查找期间获取单词的索引值

时间:2013-06-10 16:51:44

标签: vba indexing find word-vba

是否有可能在.find期间获得单词索引?我用.find.text来获取单词,但是我需要它的索引位置,然后将它保存在数组中。

通常,它是

    documents("doc").word(index)

但如果我喜欢这样的话:

    dim indexarray() as long
    dim i as long
    i = 0

    with documents("doc").content.find

         .text = word

         do while .execute
            redim preserve indexarray(i)
            indexarray(i) = index
            i = i+1
         loop

    end with

是否可以在没有循环的情况下获得索引?

1 个答案:

答案 0 :(得分:4)

您无法获得所选/找到的单词数量,但根据您的需要,可能会有一些可行的解决方法。在这里,我将提出一个想法。

我已经更改了您提供的一些代码 - 请参阅内部的一些评论:

Sub Workaround()

    Dim indexarray() As Long
    Dim i As Long
    Dim Index
    i = 0

    'searching by Range object variable
    Dim DocRNG
    Set DocRNG = ActiveDocument.Content 'here change into your document object

    'start searching with reference to variable
    With DocRNG.Find

         .Text = "commodo"  'here your text to search

         Do While .Execute

            ReDim Preserve indexarray(i)

            'possible workaround!!!
            Index = ActiveDocument.Range(0, DocRNG.End).Words.Count

            indexarray(i) = Index
            i = i + 1
         Loop

    End With
End Sub

重要!请注意,逗号,点,分号等字符也属于Words collection。因此这些句子:

Nunc viverra, imperdiet enim. Fusce est; Vivamus a tellus!

返回13个单词,而你可以计算9个单词。但是,建议的解决方法将正常工作,我尝试和测试。