在转动文本斜体后以非斜体方式创建Word的光标类型(或更多文本插入)

时间:2008-11-25 20:21:13

标签: vba ms-word word-vba

当我执行以下代码时:

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 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

1 个答案:

答案 0 :(得分:1)

当您将文本插入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

如果您必须稍后插入文本,则可能需要插入一些稍后替换的虚拟文本。