【问题标题】:Make Word's Cursor Type (Or More Text Insert) in Non-Italic After Turning Text Italic将文本变为斜体后,将 Word 的光标类型(或更多文本插入)变为非斜体
【发布时间】:2010-09-24 00:57:04
【问题描述】:

当我执行以下代码时:

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

【问题讨论】:

    标签: vba ms-word


    【解决方案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
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-29
      • 2018-03-27
      • 2011-07-06
      • 2018-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多