2008-11-25 50 views
0

當我執行以下代碼後:使在非斜體字的遊標類型(或多個文本插入)將文本斜體

Dim italicSaveRange As Word.Range 
Dim savedItalic As Variant 
Dim someRange As Word.Range 

Set italicSaveRange = someRange.Duplicate 
italicSaveRange.Collapse (WdCollapseEnd) 
savedItalic = italicSaveRange.Italic 
someRange.Italic = True 
italicSaveRange.Italic = savedItalic 

我期望的任何文本光標處輸入或插入someRange一拉:

someRange.InsertAfter "Lorem ipsum..." 

不會是斜體(假設不能格式化斜體在此位置之前,當然)。但它是。幫幫我。


根據您的建議,我現在有以下幾項,這似乎是工作。這可能是一個脆弱的解決方案,取決於在此期間移動的內容(例如,嘗試在Word中輸入一些斜體文本,ctrl-i準備使用非斜體,然後將光標左移到斜體,然後右移再次;光標插入斜體文本...),但爲我的目的,我在其他地方添加文本(但在不同級別的代碼,以便我不能訪問文本插入此級別),這可能會工作。謝謝。

Set italicSaveRange = someRange.Duplicate 
italicSaveRange.Collapse (WdCollapseEnd) 
savedItalic = italicSaveRange.Italic 
someRange.Italic = True 
italicSaveRange.InsertAfter SP 
italicSaveRange.Characters(1).Italic = savedItalic 
italicSaveRange.Characters(1).Delete 

回答

1

當您向Word Range對象中插入文本時,此文本將始終(afaik)繼承之前文本運行的格式。

要解決,你應該應用的格式,你插入的文本後,即

Dim italicSaveRange As Word.Range 
Dim savedItalic As Variant 
Dim someRange As Word.Range 

Set italicSaveRange = someRange.Duplicate 
italicSaveRange.Collapse (WdCollapseEnd) 
savedItalic = italicSaveRange.Italic 
someRange.Italic = True 
italicSaveRange.Text = "Lorem ipsum..." 
italicSaveRange.Italic = savedItalic 

如果必須插入文本後,你可能需要插入您稍後更換一些虛擬的文本。

相關問題