Vba 宏未拾取文本中的连字符

Vba 宏未拾取文本中的连字符,vba,ms-word,Vba,Ms Word,今天早些时候运行的宏出现了一点错误。我们有一个宏,它在word文档中搜索某些单词,并在检测到它们时更改字体类型。出于某种原因,我们添加了一个包含连字符的新词/短语,例如this。连字符两边都没有空格,我不明白为什么连字符都检测不到。下面是一个代码示例 With Selection.Find .Text = "hyphenated-word" .Replacement.Text = "" .Replacement.Font.Name =

今天早些时候运行的宏出现了一点错误。我们有一个宏,它在word文档中搜索某些单词,并在检测到它们时更改字体类型。出于某种原因,我们添加了一个包含连字符的新词/短语,例如this。连字符两边都没有空格,我不明白为什么连字符都检测不到。下面是一个代码示例

       With Selection.Find
        .Text = "hyphenated-word"
        .Replacement.Text = ""
        .Replacement.Font.Name = "Whitney Bold"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchWholeWord = True
   End With
   Selection.Find.Execute Replace:=wdReplaceAll

无论出于何种目的,代码本身都与其他单词(如“your”等)配合使用,但与此不同。是否缺少规则?

如果在Word的UI(Ctrl+H)中进行测试,是否会得到相同的结果?您确定连字符是真正的连字符,而不是非中断连字符或可选连字符吗?(一个将始终强制连字符的两侧保持在同一行上,而不是在行尾断开;另一个仅在连字符处于活动状态且单词在行尾断开时显示。)如果复制术语,则将其粘贴到查找对话框的“查找内容”框中,查找/替换是否有效?运行此宏时,是否确定该单词在您的
选择中
?使用代码进行测试时,我在替换包含连字符的单词时未发现任何问题。但是,我确实在用“”空白字符串替换单词时遇到问题。在这些情况下,它忽略了替换,但根据字体格式的更改正确地设置了单词的格式。将.Replacement.Text=“”更改为=“”,以查看是否可以用单个空格替换。我认为这个函数有点古怪。