Vba 制作单词';将文本转换为斜体后,s光标类型(或多个文本插入)为非斜体

Vba 制作单词';将文本转换为斜体后,s光标类型(或多个文本插入)为非斜体,vba,ms-word,Vba,Ms Word,当我执行以下代码时: 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 itali

当我执行以下代码时:

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
a la的任何文本:

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

将文本插入Word范围对象时,此文本将始终(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
如果以后必须插入文本,则可能需要插入一些稍后替换的虚拟文本