Word VBA突出显示特定文本(但不类似)

Word VBA突出显示特定文本(但不类似),vba,ms-word,Vba,Ms Word,首先,是的,我看过其他关于突出显示Word文档中文本的帖子。这个问题是不同的,因为我想从结果中排除一个非常相似的文本字符串 下面的脚本将突出显示某些字符串。问题是我在搜索代码,而在创建变量时使用的约定是使用我正在搜索的字符串并在@符号前面加上前缀来创建变量名。我只想要开头没有@符号的实例。例如,如果我正在搜索dog,我想突出显示dog,或dog,但特别排除@dog。我已尝试修改.Text标准,但似乎没有完全正确。希望这对某些人来说是一个简单的答案。相关代码如下;提前谢谢 Set rng =

首先,是的,我看过其他关于突出显示Word文档中文本的帖子。这个问题是不同的,因为我想从结果中排除一个非常相似的文本字符串

下面的脚本将突出显示某些字符串。问题是我在搜索代码,而在创建变量时使用的约定是使用我正在搜索的字符串并在@符号前面加上前缀来创建变量名。我只想要开头没有@符号的实例。例如,如果我正在搜索dog,我想突出显示dog,或dog,但特别排除@dog。我已尝试修改.Text标准,但似乎没有完全正确。希望这对某些人来说是一个简单的答案。相关代码如下;提前谢谢

  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”。我生成搜索字符串的方法(此处未显示)是向搜索中添加空字符串或零长度字符串,这导致了我的问题。你的回答解决了我的问题-谢谢你让我再看一眼!