我正在研究一个宏,它将扫描我的文档中的一个单词(用户输入)。当找到该单词时,将该段添加到变量中。然后检查变量中的第一个“单词”,看看它是否是罗马数字。如果它是罗马数字,我想将选择减少到最后的第二个单词。
在Excel中,我会使用“Mid”或“Right”之类的内容来获取“x”的文本。或“我”。
然而,我仍然坚持如何“调整”单词选择。我搜索过,但大多数都在Excel中找到帮助。
以下是由两部分组成的代码:
Sub Find_Definitions()
Dim myDoc As Word.Document
Dim oRng As Word.Range, rng As Word.Range
Dim addDefinition$, findText$, editedDefinition$
Set myDoc = ActiveDocument
findText = InputBox("What term would you like to search for?")
If findText = "" Then Exit Sub
'Loop through the document
Set oRng = myDoc.Content
With oRng.Find
.ClearFormatting
.Text = findText
.MatchCase = False
.Wrap = wdFindContinue
While .Execute
Set rng = oRng.Paragraphs(1).Range
rng.Select
' Here's where I could check the text, and see if it starts with Roman numerals.
editedDefinition = Check_For_Roman_Numerals(rng)
Wend 'end .execute
End With 'oRng.find
End Sub
这是我正在努力工作的代码:
Private Function Check_For_Roman_Numerals(ByVal mySelection As Word.Range) As Range
Dim romanNumerals() As Variant
Dim firstWord$, paragraphsText As Variant, xWord As Variant
Dim oWord As Word.Range
Dim i&
romanNumerals = Array("i", "ii", "iii", "iv", "v", "vi", "vii", "viii", "ix", "x", "xi", "xii")
Dim editedSelection$
editedSelection = mySelection.Text
With mySelection
Debug.Print mySelection.Text
For i = LBound(romanNumerals) To UBound(romanNumerals)
If (mySelection.Words(1) = romanNumerals(i)) Or (mySelection.Words(1) = romanNumerals(i) & ".") Then
'I get a TYPE MISMATCH Error on the next line, highlighting 'MoveStart'
Set Check_For_Roman_Numerals = mySelection.MoveStart(unit:=wdWord, Count:=1)
Debug.Print Check_For_Roman_Numerals
Debug.Print mySelection.Text
Exit For
End If
Next i
End With 'mySelection
Set Check_For_Roman_Numerals = mySelection
End Function
感谢您提供任何帮助或提示。这个想法是第二个宏将在开始时返回没有“i。”或“ii。”或“x。”等的文本。否则,请返回原始文本。
编辑:我想我也可以尝试将rng
减少一个词,但不确定如何。
此外,我几乎可以得到我想要的内容,但 不 希望更改文档中的文字。如果我这样做,以下工作(代替我上面的错误行):
mySelection.Words(1).Delete
。
我需要在单词文档中保留罗马数字,我只是想弄清楚如何删除它们(并且可能放入一个字符串),所以我可以添加非罗马数字文本到索引的entry
和entryautotext
。