Vba 我想删除最后一个单词中的粗体/斜体/下划线格式以继续正常写入

Vba 我想删除最后一个单词中的粗体/斜体/下划线格式以继续正常写入,vba,ms-office,ms-word,office-interop,Vba,Ms Office,Ms Word,Office Interop,我正在编写一个程序,当您在Ms Word中书写时,它会更改单词列表的格式 我使用Range.Find.Execute查找我想要修改的文本,然后修改范围(例如斜体) 一切都很顺利,除了我要换的字是最后一个字。然后,样式仍保留在Ms Word中。因此,如果您继续键入,插入的新文本将以斜体显示,我不希望出现这种情况 我还尝试折叠范围并删除斜体: myRange.Collapse(WdCollapseDirection.wdCollapseEnd) myRange.Italic = 0 但这也不行 我

我正在编写一个程序,当您在Ms Word中书写时,它会更改单词列表的格式

我使用Range.Find.Execute查找我想要修改的文本,然后修改范围(例如斜体)

一切都很顺利,除了我要换的字是最后一个字。然后,样式仍保留在Ms Word中。因此,如果您继续键入,插入的新文本将以斜体显示,我不希望出现这种情况

我还尝试折叠范围并删除斜体:

myRange.Collapse(WdCollapseDirection.wdCollapseEnd)
myRange.Italic = 0
但这也不行

我能想到的唯一可能的解决方法是模拟热键来切换粗体(Ctrl+B)/斜体(Ctrl+I)/下划线(Ctrl+U),但它有许多不便之处,例如它取决于语言。在西班牙语中,Ctrl+N表示粗体等

医生。 我正在用Word2003和2007测试它,但我希望在兼容性方面尽可能广泛


我正在用VB.NET编写代码,但这并不重要,因为如果您知道用vba编写代码的方法,我将修改代码。

替换文本后,再次尝试选择范围,然后将斜体设置为0

听起来Word正在执行其默认行为---如果选择的长度为零,然后将下一个插入的字符格式化为插入点之前的字符。我能想到几个不雅观的乱七八糟的地方:(1)在结尾有一些虚拟文本“查找/替换”从不对最后一个词起作用,(2)在“查找/替换”之后,将所选内容设置为最后一个(可能不可见)段落标记。谢谢。我改变了当前选择的字体。我是这样做的:CurrentWordApplication.ActiveDocument.ActiveWindow.Selection.Font.Italic=0如果您还有其他问题,我会尽力帮助您。目前正在从事类似的工作
myRange.Collapse(WdCollapseDirection.wdCollapseEnd)
myRange.Italic = 0