在Excel VBA中搜索后如何清除搜索条件和单词

时间:2018-09-18 08:10:23

标签: excel vba excel-vba userform

场景

我有一个用户窗体,除其他自动化工作外,该窗体上的按钮还具有MatchCase = True的搜索功能。每当此用户窗体处于活动状态并且我尝试在其他打开的工作簿中进行搜索时,总是会选中“区分大小写”。每当此用户窗体处于活动状态时,我每次都需要在excel中手动取消选中“匹配”大小写。请看图片

未显示用户表单

enter image description here

显示用户表单时

enter image description here

问题

是否可以使用MatchCase = True运行我的宏,但是同时我打开其他工作簿并默认情况下未选中则按Ctrl + F Matchcase?换句话说,执行搜索宏后如何删除搜索关键字和搜索条件?我正在将以下搜索代码与搜索词一起用作变量worD

Selection.Find(What:=worD, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=True, SearchFormat:=False).Activate

3 个答案:

答案 0 :(得分:3)

完成后执行虚拟搜索

Sub clearFind(ws As Worksheet)
    With ws.Cells
        .Find What:="", After:=ActiveCell, LookIn:=xlFormulas, _
              LookAt:=xlPart, SearchOrder:=xlByRows, _
              SearchDirection:=xlNext, MatchCase:=False, _
              SearchFormat:=False
    End With
End Sub

答案 1 :(得分:0)

从理论上讲,也许您可​​以使用SendKeys,但根据我的经验,这并不可靠。

 ' here set a variable to search. After that:
      Application.SendKeys ("^f")
      Application.SendKeys ("{DELETE}")
 ' and finally paste variable.value via SendKeys

答案 2 :(得分:0)

根据堆栈溢出中的某些成员,一种简单的方法是虚拟搜索,该虚拟搜索会清除匹配情况和搜索历史记录。

Sub dummySearch()
    dummy = Cells.Find(What:="", LookIn:=xlValues, LookAt:=xlPart)
End Sub