0
我正在處理單詞中的宏。它從excel文檔中的某些單元格中提取單元格內容,將其中的一部分放在單詞doc的末尾,加粗第一部分,然後放入其餘的字符串並取出它。然後,它會查找下一個匹配的excel doc並重復,直到沒有匹配。單詞vba範圍不使用循環重定位
在第二遍循環中,它繼續影響第一遍中添加的內容。帶塊的字體也會影響前一行,並最終加粗整個事物。我在該函數的末尾將該對象設置爲Nothing,因此我不希望它將該循環的第一部分視爲該範圍的一部分。
Do
x = AssembleSentence(Last, First, Rank)
Set Loc = .FindNext(Loc)
Loop While Not Loc Is Nothing And Loc.Address <> sFirstFind
Function AssembleSentence(Last, First, Rank)
Dim sText0 As String, sText As String, oText As Object
Set oText = ActiveDocument.Content
sText0 = First & " " & Last
sText = ", " & Rank & " Professor at College of Hard Knocks."
Set oText = ActiveDocument.Content.Paragraphs.Add
oText.Range.SetRange Start:=ActiveDocument.Range.End, End:=ActiveDocument.Range.End
Selection.EndKey Unit:=wdStory
With oText.Range
.InsertAfter (sText0)
With .Font
.Bold = True
End With
End With
Selection.EndKey Unit:=wdStory
With Selection
.Text = sText
With .Font
.Bold = False
End With
End With
Selection.EndKey Unit:=wdStory
Set oText = Nothing
End Function
原因是.InsertAfter包含現有Range中的新內容。你也可以使用RANGE對象(Dim rng as Word.Range:Set rng = oText.Range)和* collapse * it:rng.Collapse wdCollapseEnd這是我的偏好,因爲它更明顯是怎麼回事。 –
真棒解釋。謝謝! – Rodger