Как очистить условие поиска и слово после поиска в Excel VBA - PullRequest
0 голосов
/ 18 сентября 2018

Сценарий

У меня есть пользовательская форма, посредством которой кнопка выполняет функцию поиска с MatchCase = True в дополнение к другим автоматизированным работам. Всякий раз, когда эта пользовательская форма активна, и я пытаюсь выполнить поиск в других открытых книгах, всегда ставится галочка «Соответствовать регистру» Каждый раз мне нужно вручную снимать флажок Match в 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 голосов
/ 18 сентября 2018

Теоретически, возможно, вы можете использовать SendKeys, но по моему опыту это НЕ НАДЕЖНО.

 ' here set a variable to search. After that:
      Application.SendKeys ("^f")
      Application.SendKeys ("{DELETE}")
 ' and finally paste variable.value via SendKeys
0 голосов
/ 18 сентября 2018

Как и некоторые члены здесь, в переполнении стека, простой подход - это фиктивный поиск, который очищает регистр совпадений и историю поиска.

Sub dummySearch()
    dummy = Cells.Find(What:="", LookIn:=xlValues, LookAt:=xlPart)
End Sub
0 голосов
/ 18 сентября 2018

Выполните поиск пустышки, когда закончите

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
...