Я кодирую программу, которая меняет формат списка слов при написании в Ms-Word.Я хочу удалить полужирный/курсив/подчеркнутый формат в последнем слове, чтобы продолжить писать нормальный
Я использую Range.Find.Execute, чтобы найти нужный текст, я хочу изменить, а затем я изменить диапазон (например, для курсива)
myRange.Find.Execute(FindText:="inicialText", ReplaceWith:="newTextInItalics")
myRange.Italic = 1
Все работает отлично, за исключением того, когда слово Я меняю последнее слово. Затем стиль остается в Ms-Word. Поэтому, если вы продолжаете вводить текст, новый текст будет выделен курсивом, который я не хочу иметь.
Я также попытался свернуть диапазон и удалить курсив:
myRange.Collapse(WdCollapseDirection.wdCollapseEnd)
myRange.Italic = 0
Но это не сработало!
Единственное возможное обходное решение, которое я мог придумать, - это имитировать горячую клавишу для переключения жирным шрифтом (Ctrl + B)/курсив (Ctrl + I)/подчеркивание (Ctrl + U), но у него много неудобств, например, это зависит от язык. На испанском языке Ctrl + N для жирного шрифта и т. Д.
P.D. Я тестирую его в Word 2003 и 2007, но я хочу быть как можно более обширным в совместимости.
Я кодирую в VB.NET, но это не имеет значения, потому что, если вы знаете способ сделать это в vba, я буду адаптировать код.
Это звучит как слово выполняет его поведение по умолчанию --- если длина выбора равна нулю, то форматировать следующий вставленный символ, как тот, который был до точки вставки. Я могу подумать о нескольких нечетких кломах: (1) иметь какой-то фиктивный текст в конце find/replace никогда не действует на последнем слове, (2) после поиска/замены, установите выделение в окончательный (возможно, невидимый) абзац отметка. – xidgel