- •Содержание
- •Раздел 1. Быстрый старт 2
- •Раздел 2. Редактор Visual Basic 11
- •Immediate Window (окно проверки) 15
- •Раздел 3. Переменные и типы данных 27
- •Раздел 4. Операторы управления 51
- •Раздел 5. Процедуры, подпрограммы и функции 66
- •Раздел 6. Объекты ms Excel 101
- •Раздел 7. Пользовательские формы 139
- •Immediate Window (окно проверки) 177
- •Введение
- •Раздел 1.Быстрый старт Использование макрорекордера
- •Запись макроса
- •Запуск макроса
- •Абсолютные и относительные ссылки Запись формулы на рабочем листе
- •Макрорекордер
- •Диалоговые окна для ввода/вывода данных
- •Функция InputBox
- •Функция MsgBox
- •Раздел 2.Редактор Visual Basic
- •Окна редактора vb
- •Project Window (окно проекта)
- •Properties Window (Окно свойств)
- •Code (окно программы)
- •Immediate Window (окно проверки)
- •Получение справки
- •Запись процедур
- •Режимы работы с программой
- •Ошибки и их обнаружение
- •Отладка
- •Меню и панели инструментов Visual Basic
- •Панели инструментов Стандартная панель инструментов
- •Панель инструментов отладки
- •Раздел 3.Переменные и типы данных Объявление переменных
- •Важность объявления переменных
- •Область видимости переменных
- •Время жизни переменных
- •Инициализация переменных
- •Операции с элементарными данными
- •Оператор присваивания
- •Выполнение операций
- •Арифметические операции
- •Операции сравнения
- •Оператор Like
- •Логические операции
- •Символьные операции
- •Приоритет операций
- •Операции с другими типами данных
- •Объектные переменные
- •Массивы
- •Динамические массивы
- •Пользовательский тип
- •Раздел 4.Операторы управления
- •Условный оператор If
- •Оператор выбора Select Case
- •Операторы цикла
- •Цикл For…Next
- •Цикл For Each…Next
- •Оператор Set
- •Цикл Do…Loop
- •Цикл While…Wend
- •Раздел 5.Процедуры, подпрограммы и функции
- •Классификация процедур
- •Структура и объявление процедуры
- •Синтаксис объявления процедуры общего типа
- •Синтаксис объявления функции
- •Вызов процедуры
- •Параметры и аргументы
- •Возврат значения функции
- •Использование процедур-функций на рабочем листе
- •Поименованные аргументы
- •Использование необязательных аргументов
- •Использование параметра ParamArray
- •Вызов процедур другого проекта
- •Автопроцедуры
- •Событийные процедуры
- •Рекурсивные процедуры
- •Встроенные функции Классы функций
- •Использование табличных функций
- •Организация интерфейса при помощи встроенных функций
- •Функция MsgBox
- •Функция InputBox
- •Строковые функции
- •Примеры на использование различных строковых функций Функция Format
- •Функция Val
- •Функции Len, Mid
- •Функция Left
- •Функция Instr
- •Функция Chr
- •Математические функции
- •Функции Int и Fix
- •Функция Log
- •Функции Randomize и Rnd
- •Функции даты и времени
- •Примеры функций даты и времени Функции Day, Month, Year, DateSerial
- •Функции Now, Time, Timer
- •Функция WeekDay
- •Функции Hour, Minute, Second
- •Раздел 6.Объекты ms Excel
- •Свойства объектов
- •Методы объектов
- •Модель объектов
- •Коллекции объектов
- •Обращение к объекту Контейнеры
- •Ссылка на объект
- •Оператор With
- •Использование объектных переменных
- •Объект Application
- •Активные объекты
- •Свойства, влияющие на высвечивание на экране Свойство DisplayAlerts (r/w Boolean)
- •Свойства DisplayFormulaBar (r/w Boolean), DisplayStatusBar (r/w Boolean)
- •Свойство ScreenUpdating (r/w Boolean)
- •Свойства Top, Left, Height, Width, UsableWidth, WindowState
- •Свойство Visible (r/w Boolean)
- •Другие свойства объекта Application
- •Методы Метод Calculate
- •Метод CheckSpelling
- •Метод OnTime
- •Метод Wait
- •Коллекции объектов
- •Объекты Workbooks и Workbook
- •Событийные процедуры
- •Объекты Sheets, WorkSheets и WorkSheet
- •Свойства Свойство Name (r/w String)
- •Свойство Type (r/o String)
- •Свойство UsedRange
- •Свойства Next и Previous
- •Свойство Parent
- •Свойство Visible (r/w Boolean)
- •Методы Метод Add
- •Методы Move и Select
- •Событийные процедуры
- •Объект Range
- •Свойства Cвойство Range
- •Свойство Cells
- •Свойство Offset
- •Метод Union и свойство Areas
- •Свойства Column и Row (r/o Integer)
- •Свойства Columns и Rows
- •Свойство CurrentRegion
- •Cвойства, связанные с шириной и высотой ячейки
- •Методы Методы Select и Activate
- •Метод Clear
- •Цветовое оформление объекта Range Свойство ColorIndex
- •Свойство Color
- •Раздел 7.Пользовательские формы
- •Режимы работы с формой
- •Режим конструктора
- •Элементы управления
- •Событийные процедуры
- •Режим выполнения
- •Объекты UserForm и Controls
- •Разработка приложения
- •Приложение 1
- •Конструирование начальной формы
- •Свойства формы и элементов управления
- •Создание событийных процедур
- •Конструирование формы для выбора рабочего листа
- •Создание событийных процедур
- •Элемент ListBox
- •Событийная процедура инициализации формы
- •Завершение разработки приложения
- •Связь формы с ячейками рабочего листа
- •Элемент TextBox
- •Элемент ListBox
- •Приложение 2
- •Конструирование форм
- •Процедуры
- •Приложение a. Справочная система Просмотр объектов, их свойств и методов (Object Browser)
- •Окно Object Browser
- •Панель инструментов Object Browser
- •Выход из Object Browser
- •Интерактивная подсказка
- •Приложение b. Инструментальные средства отладки программ
- •Контрольные точки или точки останова
- •Трассировка или пошаговое выполнение программы
- •Использование объекта Debug
- •Окна отладчика
- •Immediate Window (окно проверки)
- •Окно значения переменной
- •Locals Window (окно локальных переменных)
- •Окно контрольных значений (Watches)
- •Приложение c. Основные формы записи алгоритмов
- •Понятие "алгоритм"
- •Классификация алгоритмов
- •Способы записи алгоритмов
- •Запись на естественном языке
- •Изображение алгоритма в виде графических символов
- •Представление основных типов алгоритмов в виде блок-схем
Режимы работы с программой
В VBA возможны четыре режима работы с программой.
Режим конструктора. В режиме конструктора можно создавать и редактировать процедуры, создавать и модифицировать формы.
Режим выполнения программы. Для запуска процедуры используются клавиша F5 или кнопка Run на стандартной панели инструментов. Предварительно необходимо установить точку вставки внутрь выбранной процедуры. В этом режиме в заголовке окна VB после имени файла указывается [running].
Режим прерывания программы. Программа автоматически переходит в режим прерывания при возникновении некоторой ошибки во время выполнения программы.
Рис. 2.7. Прерывание программы |
Высвечивается диалог, в котором можно выбрать продолжение (Continue) или завершение работы программы (End), получение справки относительно возникшей ошибки (Help) или переход в режим отладки (Debug). |
Важно
При возникновении ошибки на этапе выполнения (Run-time error) VBA выводит сообщение, о том, какая именно ошибка произошла (например, Object required) и позволяет получить более подробный Help об этом типе ошибок. Внимательное чтение сообщений об ошибках и соотвествующих разделов Help значительно упрощает отладку.
Если программа зависает или необходимо прервать выполнение программы по какой-то причине, используйте клавиши Ctrl-Break или кнопку , при нажатии которых программа переходит в режим отладки.
Режим отладки программы (Debug). Выбор отладки после прерывания программы активизирует окно с текстом выполняемой процедуры. В окне желтым цветом выделен оператор, на котором произошло прерывание. В этом режиме в заголовке окна VBA после имени файла указывается [break].
Переход в режим отладки происходит автоматически
при достижении контрольной точки;
программа выполнила команду Stop (пауза в выполнении программы);
если выполнено некоторое условие, установленное для отслеживания значений переменных командой Add Watch.
Ошибки и их обнаружение
Ошибки делятся на три категории: ошибки разработки (синтаксические ошибки), ошибки компиляции, ошибки выполнения.
Синтаксическая ошибка – это нарушение правил языка VBA.
Это может быть некорректный оператор, неверно введенное имя переменной, если объявление переменных обязательно (для редактора VB включена опция Require Variable Declaration, см. здесь и ниже рис. 2.6), отсутствие разделителей между аргументами, несоответствие открывающих и закрывающих скобок, отсутствие закрывающих операторных скобок (End If, Next и др.), не уникальное название процедуры и т.п.
Рекомендуется
включать опцию автоматической проверки синтаксиса – Auto Syntax Check;
пользоваться контекстно-зависимой подсказкой, которая возникает при наборе имен объектов, их свойств или методов и которая устанавливается опцией Auto Quick info;
выполнять правила синтаксиса при записи функций и конструкций языка. Для уточнения этих правил в окне программы можно выделить ключевое слово, оператор, функцию, объект, его свойство или метод и нажать клавишу F1. Появится окно справочной системы, которое соответствует выделенному фрагменту кода и показывает допустимую форму записи оператора.
При наборе текста процедур редактор VB немедленно реагирует на синтаксическую ошибку: некорректный оператор выделяется цветом (по умолчанию красным) и причина возникновения ошибки поясняется сообщением. Невозможно запустить процедуру, если в какой-нибудь процедуре любого открытого проекта обнаружена синтаксическая ошибка.
При запуске процедуры происходит процесс проверки уже не отдельных строк, а программы в целом. Вначале происходит компиляция программы и выявляются ошибки компиляции. Это, чаще всего, повторное объявление одной и той же переменной в одной процедуре, несоответствие типов переменных присваиваемым значениям. Например, переменная объявлена как объектная переменная, а ей присваивается символьное значение.
На этапе выполнения программы выявляются ошибки, которые не могли быть обнаружены редактором Visual Basic (ошибки выполнения).
Логические ошибки в программе не противоречит синтаксису оператора, но могут привести к неверным результатам выполнения программы. Примерами логических ошибок могут служить неверные имена или типы переменных, бесконечные циклы, ошибочные условия или неверные размеры массивов.
Ошибки вычислений могут являться результатом попытки выполнить недопустимую операцию, например, деление на нуль.
Во время выявления какой-нибудь ошибки происходит прерывание программы, если на вкладке General (Общие) диалогового окна Options (см. рис. 2.6) установлена опция Break on All Errors (Останов при любой ошибке).
На рис. 2.7 показан диалог, который возникает при прерывании программы. Нажатие кнопки Debug переводит программу в режим отладки. Оператор, на котором произошло прерывание (в котором возникла ошибка), подсвечивается.