Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1888.DOC
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
6 Мб
Скачать
☆

6.1.6. Использование ссылок на диапазоны в качестве параметров пользовательских функций

Пример из пункта 6.1.5 о вычислении стоимости партии книг звучит уже убедительно. VBA действительно может облегчить жизнь пользователя. Возникает только один вопрос по двум приведенным примерам. В созданных в них пользовательских функциях в качестве значений параметров были только ссылки на ячейки. Можно ли построить пользовательскую функцию, у которой в качестве значений параметров могут быть ссылки на диапазоны ячеек? Другими словами, возможно ли построить некоторый аналог функции рабочего листа СУММ, которая возвращает сумму значений из указанных диапазонов ячеек. Ответ на этот вопрос положителен. И задачу решает следующий код:

Function MySum(ByVal rng As Range) As Double

Dim с As Range

Dim s As Double

s = 0

For Each с In rng.Cells

s = s + с.Value

Next

MySum = s

End Function

6.1.7. Панель инструментов «Элементы управления»

При помощи панели инструментов Элементы управления, которая отображается на экране выбором команды Вид Панели инструментов Элементы управления, на рабочем листе можно размещать различные элементы управления: кнопку, список, переключатель и другие (рис. 6.5).

Рис. 6.5. Панель инструментов для рабочего листа

В модуле рабочего листа можно создать процедуры, обрабатывающие те или иные события, происходящие с элементами управления. Например, нажатие кнопки, выбор элемента из списка, выбор переключателя, установка флажка и другие действия, которые будут автоматически приводить к тем или иным вычислениям, построению диаграмм или смене их типа и т. д. В последующих разделах будут приведены простейшие примеры подобной автоматизации работы с рабочим листом. Первоначально ограничимся только одним элементом управления – Кнопка и одним событием, связанным с кнопкой, – Click, которое генерируется при нажатии на эту кнопку.

6.1.8. Работа с макрорекордером

Написание программы, это, в каком-то смысле, обучение компьютера делать то, что вам нужно от него. Для быстрого получения чернового варианта кода, используемого в создаваемом приложении, отлично подходит макрорекордер. Макрорекордер – это транслятор, создающий программу (макрос) на языке VBA, которая является результатом перевода на языке VBA действий пользователя с момента запуска макрорекордера до окончания записи макроса.

Рассмотрим, какой код записывается в макрос при активизации рабочего листа. Затем, в следующем разделе, мы используем его для построения простейшего автоматизированного содержания рабочей книги.

Итак, пусть активизирован рабочий лист Лист1, и мы запишем макрос, который получается при активизации рабочего листа Лист2.

Для активизации макрорекордера нужно выбрать команду Сервис Макрос Начать запись. Появится диалоговое окно Запись макроса (рис. 6.6). Это диалоговое окно позволяет задать параметры макроса.

Рис. 6.6. Диалоговое окно Запись макроса

Поля Имя макроса и Описание используются для задания имени макроса и описания. Описание важно для многократно используемых макросов. Нашa память недолговечна и, не имея подсказки в виде описания, через некоторое время будет трудно вспомнить, для чего тот или иной макрос создавался. По умолчанию макросам присваиваются имена Макрос1, Макрос2 и т. д. С целью облегчения узнаваемости макроса лучше не использовать стандартное имя, а присвоить ему какое-нибудь уникальное имя, поясняющее, для чего он используется. В нашем случае, например, присвоим макросу имя АктивизироватьЛист. Поле Сочетание клавиш позволяет назначить макросу комбинацию клавиш, т. е. указать символ, который в комбинации с клавишей Ctrl позволит его выполнить. Назначать комбинацию клавиш макросу совсем не обязательно. Это стоит делать только для постоянно используемых макросов, для быстрого доступа к ним. Не используя комбинации клавиш, макрос можно всегда вызвать командой Сервис Макрос Макросы. Раскрывающийся список Сохранить в предназначен для выбора книги, в которой будет сохранен макрос. Если выбрать Личная книга макросов, то макрос будет сохранен в специальную скрытую книгу, в которой хранятся макросы. Эта книга всегда открыта, хотя и скрыта, и записанные в ней макросы доступны для других рабочих книг. Команда Окно Отобразить позволяет отобразить личную книгу макросов. Если в раскрывающемся списке выбрать Эта книга (т. е. выбор, который по умолчанию предлагает компьютер), то макрос сохранится на новом листе модуля в активной рабочей книге, а если выбрать Новая книга, то он сохранится в новой рабочей книге.

Итак, в диалоговом окне Запись макроса в поле Имя макроса введем АктивизироватьЛист, а в поле Описание – Активизация рабочего листа Лист2. Нажмем кнопку ОK. Появится плавающая панель инструментов с кнопкой Остановить запись. Теперь все производимые действия будут записываться до тех пор, пока не будет нажата эта кнопка или не будет выбрана команда Сервис Макрос Остановить запись.

Далее щелчком на ярлыке рабочего листа Лист2 активизировать его и остановить запись макроса выбором соответствующей команды. Для просмотра только что записанной процедуры нужно выбрать команду Сервис Макрос Макросы, что приведет к отображению диалогового окна Макрос (рис. 6.7).

Рис. 6.7. Диалоговое окно Макрос

В диалоговом окне Макрос в списке выделим макрос и нажмем кнопку Изменить. На экране отобразится окно редактора VBA с активизированным стандартным модулем, в котором будет код только что записанного макроса:

Sub АктивизироватьЛист()

'

' АктивизироватьЛист Макрос

' Макрос записан 19.04.2006

'

Sheets("Лист2").Select

End Sub