Когда вы открываете вкладку «Найти» в диалоговом окне «Найти и заменить» (нажатие Ctrl + F — самый простой способ), Excel делает определенные предположения о том, что именно вы хотите искать. (См. Рис. 1.) То, что вы хотите найти, определяется настройкой раскрывающегося списка «Внутри». Когда вы впервые открываете диалоговое окно «Найти и заменить», для параметра «Внутри» по умолчанию установлено значение «Лист». Этот параметр действует независимо от того, выбираете ли вы один или несколько листов перед отображением диалогового окна.

image

Рисунок 1. Вкладка «Найти» диалогового окна «Найти и заменить».

Если вы хотите, чтобы в раскрывающемся списке «Внутри» по умолчанию использовалась «Рабочая книга» (вместо «Лист»), указать это в Excel невозможно. Вы можете найти некоторое утешение в том факте, что настройка раскрывающегося списка Внутри сохраняется для текущего сеанса работы с Excel. Другими словами, если вы установите для него значение «Рабочая книга», завершите поиск и позже отобразите вкладку «Найти» в диалоговом окне «Найти и заменить», тогда в поле «Внутри» по-прежнему будет установлено значение «Рабочая книга».

Интересно, что на первый взгляд кажется, что решить эту проблему с помощью макроса невозможно. Это связано с тем, что Excel не позволяет макросу легко отображать и изменять параметры в диалоговом окне «Найти и заменить». Многие диалоговые окна могут отображаться с помощью коллекции Dialogs, но не с помощью функции «Найти и заменить». Вместо этого VBA позволяет отображать старую версию диалогового окна «Найти», используя этот код:

Sub ShowFind1()

Application.Dialogs(xlDialogFormulaFind).Show End Sub

К сожалению, в этой версии диалогового окна «Найти» нет элемента управления, позволяющего указать область поиска, как это можно сделать с помощью раскрывающегося списка «В пределах» на вкладке «Найти» диалогового окна «Найти и заменить».

Есть способ отобразить правильное диалоговое окно «Найти и заменить», но не с помощью коллекции Dialogs. Вместо этого вам нужно открыть диалоговое окно с помощью коллекции CommandBars, которая, по сути, отображает диалоговое окно с помощью команды меню. Вот как это сделать:

Sub ShowFind2()

ActiveSheet.Cells.Find What:="", LookAt:=xlWhole     Application.CommandBars("Worksheet Menu Bar").FindControl( _       ID:=1849, recursive:=True).Execute End Sub

Метод Find позволяет вам устанавливать различные параметры в диалоговом окне «Найти и заменить», а затем осуществляется доступ к объекту CommandBars для фактического отображения диалогового окна.

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (3170) применим к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и более поздних версий) здесь:

link: / excelribbon-Searching_a_Workbook_by_Default [Поиск в книге по умолчанию].