Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Word VBA:如何在用户每次按下搜索词的快捷键时跳转到多个搜索词的下一个实例?_Vba_Ms Word - Fatal编程技术网

Word VBA:如何在用户每次按下搜索词的快捷键时跳转到多个搜索词的下一个实例?

Word VBA:如何在用户每次按下搜索词的快捷键时跳转到多个搜索词的下一个实例?,vba,ms-word,Vba,Ms Word,期望的结果是,当用户按下快捷键时,光标跳到多个搜索词的下一个实例。现在让我们说“[Ff]izz”和“[Bb]uzz”。我不想做任何更改,只需通过文档向前跳到下一个实例 当前代码如下所示,但如果Wrap设置为wdFindStop,则跳转到下一个“fizz”,如果Wrap设置为wdFindContinue或wdFindAsk,则跳转到“buzz”。如果一行只是“嘶嘶嘶嘶”,我希望它能够从左到右依次选择每个单词 Sub FizzBuzzFinder() Dim StrFind As String

期望的结果是,当用户按下快捷键时,光标跳到多个搜索词的下一个实例。现在让我们说“[Ff]izz”和“[Bb]uzz”。我不想做任何更改,只需通过文档向前跳到下一个实例

当前代码如下所示,但如果Wrap设置为wdFindStop,则跳转到下一个“fizz”,如果Wrap设置为wdFindContinue或wdFindAsk,则跳转到“buzz”。如果一行只是“嘶嘶嘶嘶”,我希望它能够从左到右依次选择每个单词

Sub FizzBuzzFinder()


Dim StrFind As String
Dim i As Long

StrFind = "[Ff]izz,[Bb]uzz"

Selection.Find.ClearFormatting

With Selection.Find
  .MatchWildcards = True
  .Wrap = wdFindAsk
  .Forward = True
  For i = 0 To UBound(Split(StrFind, ","))
    .Text = Split(StrFind, ",")(i)
    .Execute
  Next i
End With


End Sub

知道我做错了什么吗?提前欢呼

问题是你的循环。它搜索嘶嘶声,选择嘶嘶声,然后搜索嗡嗡声,在文本中前进。由于这种情况同时发生,用户只能看到它选择Buzz

为了纠正这个问题,我删除了For循环,并将搜索字符串从两个项更改为一个与Fizz或Buzz匹配的项

Sub-FizzBuzzFinder()
Dim StrFind As字符串
我想我会坚持多久
StrFind=“[FfBb][ui]zz”
Selection.Find.ClearFormatting
选择。查找
.MatchWildcards=True
.Wrap=wdFindAsk
.Forward=True
.Text=StrFind
.执行
以
端接头

不幸的是,这也符合Fuzz和Bizz。

为回答干杯。我不确定这在实践中效果如何,因为搜索词将比嘶嘶声和嗡嗡声复杂一点——我试图用它来查找“[Ff]rom/[Bb]之间的任何数字,有时包括小数、货币单位、百分号等,后跟连字符或破折号”,因此,我需要一个它可以同时查找的唯一通配符搜索列表。