我有一个范围(rng
),其中包含“手段”一词。我试图确定“手段”之前的两个单词是否加下划线,但不能弄清楚如何。
这是我rng.Text
的内容(注意括号表示带下划线的文字)
"[Automobile] - means a car that isn't a bus but can be an SUV"
有时,它是"The way you have to go about it is with the various means of thinking"
。
第一个是定义,因为它的“装置”前面带有带下划线的单词。第二个例子不是定义。
我试图让我的宏在“意味着”之前看两个单词,但是不能弄清楚如何。
我可以通过这个来计算它有多少个字符:
Dim meansLoc&
meansLoc = instr(rng.Text, "means")
然后,我可以测试If rng.Characters(meansLoc-9).Font.Underline = wdUnderlineSingle
,但是如果我定义的单词只说3个字符(“爸爸 - 意味着父亲”),我会遇到问题,因为这意味着'索引是7和7 -9 = -2)。这就是我想用词的原因。 (我可以在“手段”之前使用一两个词。)
如何在rng
中返回“手段”的字符索引。如何从我的rng
获得“单词索引”(即2)?
答案 0 :(得分:1)
字符和单词都是范围,因此一种方法是将字符的开头范围与rng中的每个字词进行比较,例如:你可以从
开始' assumes you have already declared and populated rng
Dim bDefinition As Boolean
Dim i as Integer
Dim meansLoc as Integer
Dim meansStart as Integer
meansLoc = instr(rng.Text,"means")
meansStart = rng.Characters(meansLoc).Start
bDefinition = False
For i = 1 To rng.Words.Count
If rng.Words(i).Start = meansStart Then ' i is your Word index (i.e. 3, not 2!)
If i > 2 Then
If rng.Words(i - 2).Font.Underline = wdUnderlineSingle Then
Debug.Print "Looks like a definition"
bDefinition = True
Exit For
End If
End If
End If
Next
If Not bDefinition Then
Debug.Print "Couldn't see a definition"
End If
请记住Word认为是" word"可能与你正常理解什么是" word"是