Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование в Excel.doc
Скачиваний:
21
Добавлен:
03.05.2019
Размер:
1.48 Mб
Скачать

3.6.5. Применение свойства Address для отладки кода, работающего с объектом Range

У любого объекта Range есть свойство Address, которое возвращает адрес ячеек диапазона в виде строки. В следующем примере при отладке процедуры HideColumns используется свойство Address:

Sub HideColumns() Set r = Worksheets( "Sheet1 ").UsedRange MsgBox r.Address ' только при отладке! For i = 1 To r.Columns.Count If i Mod 2 = 0 Then r.Columns(i).Hidden = True MsgBox r.Columns(i).Address ' только при отладке! End If Next i End Sub

Окна с сообщениями можно заменить контрольными выражениями (watch expressions). В предыдущем примере можно было бы установить два таких выражения — r.Address и r.Columns(i).Address — и понаблюдать за их значениями в окне Immediate (Проверка). Подробнее об отладке см. главу 14 “Отладка и обработка ошибок”.

3.7. Работа с событиями

Событийно-управляемое программирование предназначается для обработки различных событий, например, щелчок кнопки мыши или загрузка формы, запуск макроса при активизации или изменении листа. В Microsoft Excel 97 набор событий расширен и в него добавлены процедуры обработки событий, принимающие аргументы.

Microsoft Excel 97 допускает написание процедур обработки событий на уровне листа, диаграммы, книги или приложения. Например, событие Activate происходит на уровне листа, а событие SheetActivate доступно как на уровне книги, так и на уровне приложения. Событие SheetActivate для книги возникает при активизации любого из ее листов, а на уровне приложения — при активизации любого листа открытых в данный момент книг.

Процедуры обработки событий листа и книги создаются по умолчанию для любого открытого листа, диаграммы или книги. Чтобы написать процедуру обработки события для внедренной диаграммы или для приложения, создайте новый объект в модуле класса с помощью ключевого слова WithEvents. Модуль класса можно использовать и для создания процедур обработки событий, доступных из нескольких листов или книг.

3.7.1. Включение и отключение обработки событий

Для включения или отключения обработки событий предназначено свойство EnableEvents. Например, при сохранении книги методом Save возникает событие BeforeSave. Вы можете предотвратить это событие, установив свойство EnableEvents как False перед вызовом метода Save:

Application.EnableEvents = False ActiveWorkbook.Save Application.EnableEvents = True

3.7.2. Использование событий, связанных с рабочими листами

События, связанные с рабочими листами, включены по умолчанию. Чтобы просмотреть процедуры обработки событий для конкретного листа, подходит любой из следующих методов:

  • Щелкните правой кнопкой мыши ярлычок листа, выберите в контекстном меню команду View Code (Исходный текст) и укажите в списке Procedure (Процедура) имя нужного события.

  • Выберите из меню Tools (Сервис) команду Macro (Макрос), затем — Visual Basic Editor (Редактор Visual Basic). Теперь выберите в окне проекта интересующий Вас лист и либо щелкните кнопку View Code (Программа), либо вызовите из меню View (Вид) команду Code (Программа). В списке Object (Объект) укажите строку Worksheet или Chart, а в списке Procedure (Процедура) — имя события.