Word VBA突出显示特定文本(但不类似)
首先,是的,我看过其他关于突出显示Word文档中文本的帖子。这个问题是不同的,因为我想从结果中排除一个非常相似的文本字符串 下面的脚本将突出显示某些字符串。问题是我在搜索代码,而在创建变量时使用的约定是使用我正在搜索的字符串并在@符号前面加上前缀来创建变量名。我只想要开头没有@符号的实例。例如,如果我正在搜索dog,我想突出显示dog,或dog,但特别排除@dog。我已尝试修改.Text标准,但似乎没有完全正确。希望这对某些人来说是一个简单的答案。相关代码如下;提前谢谢Word VBA突出显示特定文本(但不类似),vba,ms-word,Vba,Ms Word,首先,是的,我看过其他关于突出显示Word文档中文本的帖子。这个问题是不同的,因为我想从结果中排除一个非常相似的文本字符串 下面的脚本将突出显示某些字符串。问题是我在搜索代码,而在创建变量时使用的约定是使用我正在搜索的字符串并在@符号前面加上前缀来创建变量名。我只想要开头没有@符号的实例。例如,如果我正在搜索dog,我想突出显示dog,或dog,但特别排除@dog。我已尝试修改.Text标准,但似乎没有完全正确。希望这对某些人来说是一个简单的答案。相关代码如下;提前谢谢 Set rng =
Set rng = doc.Range
With rng.Find
.ClearFormatting
.Text = VBA.Split(strSearchTerms, strDelim)(dblLCV)
.Replacement.ClearFormatting
.Replacement.Highlight = True
.Replacement.Text = "^&"
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = True
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll
End With
到目前为止,最接近的结果是使用
.Text = "[!@]" & VBA.Split(strSearchTerms, strDelim)(dblLCV)
但这只是突出显示了除@String之外的所有内容。您需要转义
@
符号,它是一个特殊字符<代码>[!\@]应该可以完成这项工作。经过一些尝试和错误,这让我得到了我需要的:
.Text = "[,. ]{1,}" & VBA.Split(strSearchTerms, strDelim)(dblLCV) & ">"
我用已知的标准替换了@标准,因为我无法让“不”逻辑起作用。希望这对其他人有帮助 那可不行。现在,除@符号外,所有文本均高亮显示。我在找:dog=突出显示@dog=未突出显示其他所有内容=未突出显示谢谢
[!\@]dog
为我突出显示“dog”,但不突出显示“dog”。我生成搜索字符串的方法(此处未显示)是向搜索中添加空字符串或零长度字符串,这导致了我的问题。你的回答解决了我的问题-谢谢你让我再看一眼!