У меня была похожая проблема. У меня есть кнопка в рабочей тетради. Если кнопка нажата, я хочу, чтобы 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 дважды, и вы попадете к поиску в выпадающем меню, несмотря ни на что (потому что предыдущие шаги гарантируют, что параметры действительно отображаются!)
Дважды нажмите стрелку ВНИЗ, чтобы выбрать «Рабочая книга», и нажмите ВВОД, чтобы выбрать
Нажмите ALT + T дважды, чтобы снова установить курсор на поле ввода поиска.
Надеюсь, что это помогает кому-то еще, кто имеет подобную проблему. Многие из Google уже сказали мне, что с помощью VBA невозможно предварительно выбрать «поиск по всем книгам», но этот способ работает!
Чтобы заставить его работать с разными языками, вам нужно проверить его и использовать CASE для переключения на правильную процедуру с соответствующими ярлыками.