Сделать тип курсора Word (или вставку большего количества текста) не курсивом после поворота курсива - PullRequest
0 голосов
/ 25 ноября 2008

Когда я выполняю следующий код:

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

1 Ответ

1 голос
/ 26 ноября 2008

Когда вы вставляете текст в объект 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

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

...