Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

VBA. Практическое программирование

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
666 Кб
Скачать

Отладка программ

Dim Pro (1 To 15, 1 To 10) As Single

Заполнение массива.

For K = 1 To 15

For J = 1 To 10

Pro(K, J) = K * J

Next J

Next K

End Sub

В VBA максимальная размерность массива — 60.

Отладка программ

Если бы все программировали идеально, то необходимость; отладки программ отпала бы сама собой: каждая создаваемая программа выполняла бы все требуемые действия с первого раза. Как известно, такого не бывает, поэтому каждая среда программирования имеет инструменты, с помощью которых можно решить проблемы, возникающие в процессе программирования. В VBA также есть средства, которые позволяют исключить ошибки при разработке программ.

Отладка программ — это проверка и внесение исправлений в программу при ее разработке. Отладка позволяет идентифицировать ошибки, допущенные при программировании, например, орфографические ошибки в инструкциях, именах функций и переменных, а также логические ошибки.

Все ошибки, возникающие при программировании можно отнести к трем категориям:

Ошибки компиляции возникают, если VBA не может интерпретировать введенный текст, например, при использовании неправильного синтаксиса инструкции или задании неверного имени метода или свойства. Некоторые ошибки компиляции обнаруживаются при вводе инструкции, а другие перед выполнением программы. Данный тип ошибок обыч- но просто идентифицировать и исправить, поскольку VBA выявляет их автоматически, а сами ошибки очевидны.

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

51

1. Основы VBA

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

Логические ошибки трудно заметить и устранить. Логиче- ские ошибки не приводят к прекращению компиляции или выполнения. Однако они являются причиной того, что программа не выдает желаемых результатов. Ошибки данного типа идентифицируются путем тщательной проверки с помощью средств отладки VBA.

Обратите внимание, что если возникает ошибка выполнения, то исполнение макроса прерывается и выводится стандартное сообщение, которое пользователю весьма не просто понять. Однако самое главное — макрос не доводит до завершения операцию, для выполнения которой он предназначен. Хотя и невозможно предотвратить возникновение всех возможных ошибок, следует стремиться к уменьшению их числа. В маленьком макросе довольно просто выявить ошибку. Однако по мере увеличения размеров и сложности программ, а также добавления новых переменных и процедур, становится труднее и труднее находить ошибки, В этом случае необходимо воспользоваться средствами отладки VBA.

Одним из самых простых инструментов, используемых для предотвращения множества ошибок в приложениях VBA, является инструкция Option Explicit. Данная инструкция определяет необходимость явного задания переменных в программах. Хотя ко- му-то может показаться, что можно обойтись без инструкции Option Explicit, лучше все-таки использовать ее, т. к. она имеет следующие достоинства:

Если неправильно указать имя описанной переменной, то при компиляции макроса возникает ошибка. Сообщение об ошибке использования необъявленной переменной является знаком того, что в имени переменной допущена орфографическая ошибка или что переменная не описана. В любом случае такой недочет нетрудно исправить.

Для определения ошибок редактор VBA позволяет выполнять процедуры в пошаговом режиме. Чтобы выполнить инструкции в пошаговом режиме, можно воспользоваться командами меню

52

Отладка программ

«Debug» («Отладка»). Меню «Debug» включает команды и комбинации клавиш, с помощью которых можно выполнить программу

âпошаговом режиме Дли выполнения программы в пошаговом режиме чаще всего используется команда «Step Into» («Шаг с заходом»), которая позволяет выполнить одну строку программы и перейти к следующей.

Отладка программ в Visual Basic выполняется главным образом

âрежиме прерывания. Переход в данный режим выполняется:

При нажатии кнопки Debug в окне сообщения об ошибке выполнения.

При прерывании работы макроса с помощью комбинации клавиш <Ctrl>+<Break>. Текущая инструкция выделяется в окне модуля:

По достижении точки останова.

По достижении инструкции Stop

При пошаговом.выполнении программы

При возникновении событий Break When: True è Break When Changed

В режиме прерывания, можно:

Вывести значение переменной или свойства.

Вычислить выражение в окне отладки.

Сбросить выполнение процедуры.

Выполнить процедуру в пошаговом режиме.

Одной из наиболее полезных возможностей в режиме прерывания является вывод значений переменных процедур и свойств используемых объектов. Это происходит в случае, если навести курсор на имя переменной в окне кода. Если известны ожидаемые величины, то можно сравнить их с полученными значениями. Также полезным является возможность остановить выполнение программы в какой-нибудь строке и дальше работать в пошаговом режиме. Установка и удаление точек прерывания реализуется командами отладки «Toggle Breakpoints» («Установить точку прерывания») и «Clear All Breakpoint» («Убрать все точки прерывания»).

53

2.Особенности применения VBA

âофисных приложениях или «Быстрое»

программирование

Основные объекты электронной таблицы Excel

Объектно ориентированное программирование предполагает использование свойств объектов и событий происходящих на объектах или с ними. Поэтому вначале мы посмотрим на основные объекты электронной таблицы с точки зрения возможности их применения. Основной объект — само «Приложение» («Application»). В тот момент, когда мы открывает на компьютере электронную таблицу (не открывая еще ни одной рабочей книги), мы начинаем работу с этим объектом. Как правило, ЭТ обычно открывается вместе с рабочей книгой (файлом с расширеиием .xls). Это означает, что происходит открытие объекта «Рабочая книга» («Workbook»). Для этого объекта существует ряд событий, которые мы уже можем использовать. Эти события представлены в таблице 6.

Таблица 2.1 События «Рабочей книги» («Workbook»)

Activate

Книга стала активной

 

 

BeforeClose

Происходит перед закрытием книги

 

 

BeforeSave

Происходит перед сохранением книги

 

 

Deactivate

Книга перестала быть активной

 

 

Open

Книга открыта

 

 

SheetCalculate

Выполнен персчет листа книги

 

 

SheetDeactivate

Лист книги перестал быть активным

 

 

WindowActivate

Окно стало активным

 

 

WindowDeactivate

Окно перестало быть активным

 

 

WindowResize

Размеры окна изменились

 

 

 

 

Из свойств «Рабочей книги» выделим следующие (Таблица 2.2)

54

 

Основные объекты электронной таблицы Excel

 

 

 

Таблица 2.2

 

Основные свойства «Рабочей книги

 

 

FullName

Полное имя файла, в котором хранится книга

 

 

Name

Только имя файла

 

 

Names

Коллекция всех определенных имен ячеек и диапазонов

 

 

Path

Путь, где находится имя файла

 

 

Sheets

Коллекция всех листов книги

 

 

Styles

Коллекция стилей, присоединенных к книге

 

 

 

 

И в табл. 2.3 Вы можете познакомиться основными методами.

 

Таблица 2.3

 

Основные методы для «Рабочей книги»

 

 

 

Activate

 

Делает активным окно книги

 

 

 

Close

 

Закрывает книгу

 

 

 

Protect

 

Защищает книгу от внесения изменений с помощью

 

 

пароля

 

 

 

Save

 

Сохраняет файл

 

 

 

SaveAs

 

Сохраняет файл под заданным именем

 

 

 

Unprotect

 

Снимает защиту с книги

 

 

 

 

 

 

Рабочая книга включает в себя коллекцию объектов «Лист книги» («Worksheet»). Заметим, что имя коллекции «Worksheets», и у коллекции, как у отдельного объекта есть свои свойства и методы.

Основные события для «Листа книги» — Activate (Лист стал активным), Calculate (Произошел пересчет листа), Change (Содержимое одной из ячеек изменилось), Deactivate (Лист перестал быть активным), SelectionChange (Изменилась выделенная область на листе). Основные свойства и методы «Листа книги» представлены таблицами 10 и 11. Когда Вы будете знакомиться с этими свойствами, Вы заметите, что некоторые свойства одновременно являются и объектами. Речь идет, например о коллекциях Cells, Columns, Names и др.

55

2. «Быстрое» программирование

 

 

Таблица 2.4

Основные свойства «Листа книги»

 

 

 

Cells

Ячейки текущего листа. Возможно обращение к

 

 

конкретным ячейкам

Columns

Столбцы текущего листа.

 

 

 

EnableCalculation

Разрешает или запрещает пересчет

EnableSelection

Рзрешает или запрещает выделение

Index

Номер листа в коллекции

 

 

 

Name

Имя листа

Names

Коллекция всех имен ячеек и диавпазонов листа

Next

Возвращает следующий лист книги

 

 

 

PageSetup

Создает доступ к параметрам страницы

Previous

Возвращает предыдущий лист книги

 

 

 

ProtectContents

Определяет, защищено ли содержимое листа

 

 

 

Range

Диапазон ячеек

Rows

Колонки текущего листа

 

 

 

UsedRange

Использованный диапазон ячеек

Visible

Определяет видимость объекта на рабочем листе

 

 

 

 

 

Таблица 2.5

Основные методы для листа книги

 

 

 

Activate

 

Делает лист активным

 

 

 

Add

 

Добавляет листы в рабочую книгу

Calculate

 

Выполняет пересчет листа

 

 

 

Copy

 

Копирует лист между указанными листами

Delete

 

Удаляет лист

Move

 

Перемещает лист в указанную позицию

 

 

 

Protect

 

Установка защиты на лист

SaveAs

 

Запись листа в отдельный файл

Select

 

Выделяет лист

 

 

 

 

 

 

И теперь наступила пора перейти к основному объекту в электронной таблице — объекту доступа к ячейкам и к данным в ячейках Range. Обратите внимание, что имя этого объекта не имеет пе-

56

Основные объекты электронной таблицы Excel

ревода, хотя можно попытаться по смыслу перевести как «Регион» или «Область». Это действительно очень многогранный объект, и одновременно коллекция с очень большим количеством различ- ных свойств методов. Сначала давайте вспомним, что обращение к ячейкам через Range объект реализуется несколькими способами.

Прямая адресация — Range («A1:B3»),

через имя диапазона — Range(«itogi»),

через стандартный выделенный Range объект: ActiveCell èëè

Selection,

через объект Cells(<номер строки>, <номер столбца>).

Последний вариант имеет серьезные отличия от остальных тем, что к нему нельзя применить некоторые методы и невозможно изменить ряд свойств ячейки, но в этом способе есть важное преимущество — номер строки и номер столбца могут быть именами переменных, а это расширяет возможности программирования. Однако в последних версиях VBA появился еще один способ обращения к ячейкам — одновременно через диапазон и ячейку внутри этого диапазона: Range(Cells(i, j), Cells(k,m)). Важность этого способа заключается в том, что здесь одновременно можно применять приемы работы, допустимые и для Range è äëÿ Cells. Отметим, что i è k во внутренних скобках означают соответственно верхнюю и нижнюю строку диапазона, а j è m — номера левого и правого столбцов выбранной области. Основные свойства и методы Range представлены в таблицах 2.6 и 2.7.

 

Таблица 2.6

 

Свойства объекта Range

 

 

Areas

Возвращает одноименную коллекцию, объекты

 

которой представляют в форме диапазона все

 

выделенные области

 

 

Cells

Возвращает все ячейки листа, к любой из них

 

можно обратиться через номер строки или

 

столбца

 

 

Characters

Возвращает массив символов, представляющих

 

содержащийся в ячейке текст

 

 

Column

Возвращает номер первого столбца,

 

относящегося к заданному диапазону

 

 

Columns

Представляет все столбцы диапазона

 

 

 

 

57

2. «Быстрое» программирование

ColumnWidth

Ширина столбцов в диапазоне

Count

Возвращает число ячеек в диапазоне

 

 

EntireColumn

Возвращает Range — объект, представляющий

 

столбец, которому принадлежит указанная

 

ячейка или диапазон

 

 

EntireRow

Возвращает Range — объект, представляющий

 

строку, которому принадлежит указанная ячейка

 

или диапазон

Font

Доступ к параметрам шрифта

 

 

Formula

Возвращает, содержащуюся в ячейке константу

 

или формулу в виде строки

 

 

FormulaHidden

Если лист защищен, при истинности этого

 

свойства формула будет скрыта

 

 

FormulaR1C1

Возвращает, содержащуюся в ячейке или

 

формулу в виде строки формата «R1C1»

Hidden

Делает строку или столбец скрытым или

 

открытым

 

 

HorizontalAlignment

Определяет режим горизонтального

 

выравнивания содержимого ячеек диапазона

 

 

Interior

Возвращает объект типа Interior(Интерьер)

 

 

Locked

Защищает или снимает защиту ячейки от

 

изменеий при общей защите листа

 

 

Offset

Возвращает Range — объект, полученный

 

смещением исходного диапазона на заданное

 

число строк и столбцов

 

 

Resize

Возвращает Range — объект, полученный

 

изменением размеров исходного диапазона до

 

заданного числа строк и столбцов

 

 

Row

Возвращает номер строки для первой строки

 

диапазона

 

 

RowHeight

Высота строк в диапазоне

 

 

Rows

Представляет все строки диапазона

 

 

Value

Содержимое ячейки

 

 

VerticalAlignment

Определяет режим вертикального выравнивания

 

в ячейках диапазона

 

 

WrapText

Разрешает перенос непомещающихся строк

 

 

 

 

58

 

Использование справочной системы VBA

 

 

 

Таблица 2.7

Основные методы для объекта Range

 

 

Activate

Делает текущей заданную ячейку

AutoFill

Автоматическое заполнение диапазона

AutoFit

Выполняет автоподбор ширины столбцов

Clear

Удаляет содержимое ячеек полностью

ClearComments

Удаляет комментарии к ячекам

ClearContents

Удаляет только содержимое ячеек

ClearFormats

Удаляет форматирование

Delete

Удаляет диапазон с соответствующим сдвигом

Insert

Вставляет диапазон с соответствующим сдвигом

Select

Выделяет диапазон

SpecialCells

Возвращает Range — объект, представляющий все

 

ячейки листа, удовлетворяющие заданным условиям

 

 

Отметим, что в таблицах 2.1—2.7 представлены именно основные свойства и методы объектов электронной таблицы. Для того, чтобы получить больше сведений об объектах Excel необходимо воспользоваться справочной системой VBA.

Использование справочной системы VBA

Среда программирования VBA содержит в себе стандартную справочную систему, которой Вы можете воспользоваться — для этого достаточно в меню нажать кнопку Help. Но оказывается, что существуют еще способы получения эффективной справки по свойствам и методам и синтаксису языка. Чтобы воспользоваться этим методом необходимо, находясь в среде программирования, нажать клавишу F2 или воспользоваться меню View/Object Browser. В этом случае откроется окно, содержащее список всех объектов, свойств, методов, констант.

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

59

2. «Быстрое» программирование

Рис. 2.1. Окно просмотра объектов

Упражнение 5

1.Выберите из списка библиотеку для Excel.

2.В левой части окна выберите коллекцию Worksheets. В правой части окна Вы увидите список свойств, объектов и методов для этой коллекции.

3.Используя таблицы 10—11, определите какая из иконок, расположенная слева от слов списка означает метод, свойство или событие.

4.После Вашего выбора в левой части окна Вы увидите пере- чень основных объектов и их коллекций, а также классов констант. При выборе какого нибудь слова из этого перечня в правой части окна Вы получите полный список методов, свойств и событий для выбранного Вами объекта или коллекции.

60