Сделать тип курсора 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
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

person Carl G    schedule 25.11.2008    source источник


Ответы (1)


Когда вы вставляете текст в объект Word Range, этот текст всегда (на самом деле) наследует форматирование предыдущего текстового прогона.

Чтобы обойти это, вы должны применить форматирование после того, как вы вставили текст, т.е.

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

Если вам нужно вставить текст позже, вам может понадобиться вставить некоторый фиктивный текст, который вы замените позже.

person Dirk Vollmar    schedule 25.11.2008