У меня была похожая проблема. У меня есть кнопка в рабочей тетради. Если кнопка нажата, я хочу, чтобы Excel открыл диалог поиска с уже выбранной опцией "Поиск по всем рабочим книгам" вместо значения по умолчанию "на листе", несмотря ни на что.
Кроме того, я хотел, чтобы кнопка работала независимо от скрытых или показанных опций, а также от того, вносил ли кто-либо изменения вручную. Это сложно, потому что Excel по умолчанию не показывает параметры при запуске, но запоминает и показывает их снова в следующий раз, если кто-то отобразил их раньше.
Чтобы убедиться, что нажатия клавиш работают, нам нужна серия нажатий клавиш, которая устанавливает настройку независимо от исходного состояния. Прошло немало переделок, но я нашел тот, который работает.
Вот мой код для английской версии Excel, для других языков вы должны соответственно изменить ключи.
Sub Commanbutton_Click()
Cells(1, 1).Select
SendKeys "^f", True
SendKeys "{TAB 15}"
SendKeys " ", True
SendKeys "%t%t", True
SendKeys "{TAB 2}", True
SendKeys "{DOWN}{DOWN}{ENTER}", True
SendKeys "%t%t", True
End Sub
Вы можете попробовать это вручную:
Нажмите CTRL+F для диалога поиска. Нажмите TAB 15 раз, чтобы вы либо попали в "Опции", либо в выпадающий "Поиск внутри".
Нажмите пробел и либо
1) Опции отображаются или 2) выпадающий список активируется и ничего не происходит
Дважды нажмите Alt+T, чтобы перевести курсор в поле ввода поиска
Нажмите TAB дважды, и вы попадете к поиску в выпадающем меню, несмотря ни на что (потому что предыдущие шаги гарантируют, что параметры действительно отображаются!)
Нажмите стрелку ВНИЗ дважды, чтобы выбрать "Рабочая книга", и ENTER, чтобы выбрать.
Нажмите ALT+T дважды, чтобы снова установить курсор на поле ввода поиска.
Надеюсь, что это помогает кому-то еще, кто имеет подобную проблему.
Многие из Google сказали только, что с помощью VBA невозможно предварительно выбрать "поиск по всем книгам", но этот способ работает!
Чтобы он работал с разными языками, вам нужно проверить его и использовать CASE для переключения на правильную процедуру с соответствующими ярлыками.