- •Что такое Visual Basic for Applications
- •Автоматизация среды Excel
- •Запись простого макроса
- •Выполнение макросов
- •Просмотр кода макроса
- •Редактирование кода макроса
- •Ограниченность макросов
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Назначение макросам комбинаций клавиш
- •Где хранить макросы
- •Создание личной книги макросов
- •Сохранение макросов в личной книге макросов
- •Выполнение макросов из личной книги макросов
- •Редактирование макросов в личной книге макросов
- •Удаление макросов из личной книги макросов
- •Назначение макросов командным кнопкам
- •Назначение макроса графическим изображениям
- •Назначение макросов кнопкам панелей инструментов
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Введение в процесс разработки приложений
- •Кто будет использовать приложение
- •Откуда будут поступать данные для приложения
- •Где и как будут храниться данные, полученные с помощью приложения
- •Как данные будут обрабатываться приложением
- •Вид выходных данных
- •Типы элементов управления
- •Вставка элементов управления в рабочий лист
- •Форматирование элементов управления
- •Имена элементов управления
- •Экранные формы
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Модуль: дом для кода vba
- •Обзор процедур
- •Создание процедур
- •Выполнение процедуры
- •Сохранение изменений в модуле
- •Переменные
- •Типы данных
- •Объявление переменных
- •Соглашения об именах переменных
- •Массивы
- •Присвоение значений переменным
- •Использование констант
- •Область видимости переменных и констант
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Функция MsgBox
- •Функция InputBox
- •Метод InputBox
- •Именование аргументов
- •Объединение текстовых строк
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Управление выполнением приложения
- •Оператор If
- •Оператор Select Case
- •Использование встроенных диалоговых окон Excel
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Оператор For…Next
- •Оператор Do... Loop
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Что такое объект
- •Объекты, свойства и методы
- •Объектная модель Excel
- •Пять наиболее часто используемых объектов
- •Как понимать иерархию объектной модели
- •Ссылка на объекты в коде vba
- •Работа с объектами
- •Задание свойств объекта
- •Использование методов
- •Справочная информация о свойствах и методах
- •Переменные-объекты
- •1: Sub ПримерПеремОбъекта()
- •Коллекции
- •Метод Add
- •Свойство Count
- •1: Sub КоличРабЛистов()
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Объект Application
- •Использование встроенных функций Excel
- •Свойства и методы объекта Application
- •Объект Workbook
- •Объект Worksheet
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Описание объекта Range
- •Свойства объекта Range
- •Методы объекта Range
- •Использование оператора With
- •Оператор For Each
- •Использование объекта Range
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Панели инструментов
- •Просмотр кода
- •Использование справочной системы
- •Просмотр объектов
- •Параметры редактора Visual Basic
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Тестирование и отладка как этап разработки приложений
- •Отладка
- •Режим останова
- •Использование окна Immediate
- •Просмотр значений в окне Immediate
- •Пошаговое выполнение программ
- •Наблюдение за переменными
- •Исправление ошибок
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Понятие об обработке ошибок
- •Перехват ошибок
- •Написание процедуры обработки ошибся
- •Выход из обработчика ошибок
- •Пример обработчика ошибок
- •Централизованный обработчик ошибок
- •Вопрос и ответы
- •Практикум
- •Упражнение
- •Вставка экранных форм в приложения
- •Свойства экранной формы
- •Выполнение экранной формы
- •Вставка элементов управления в экранную форму
- •Свойства элементов управления
- •Свойства командных кнопок
- •Свойства переключателей
- •Блокировка элементов управления
- •Экранные подсказки к элементам управления
- •Задание порядка обхода элементов формы
- •Назначение быстрых клавиш элементам формы
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Инициализация значений экранной формы
- •Вызов экранной формы
- •Управление поведением формы
- •Проверка вводимых данных
- •Сохранение данных, введенных в форму
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Настройка панелей инструментов
- •Создание панелей инструментов
- •Процедуры, управляющие панелями инструментов
- •Создание панели инструментов
- •Удаление панели инструментов
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Способы изменения меню
- •Программная работа с меню
- •Добавление пунктов и команд меню
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Создание диаграмм
- •Запись макроса построения диаграмм
- •Код макроса
- •Изменение кода макроса
- •Усовершенствованная процедура построения диаграмм
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Работа со сводной таблицей
- •Основы сводных таблиц
- •Запись макроса для создания сводной таблицы
- •Исследование кода макроса
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Базы данных, доступные из Excel
- •Средства доступа к внешним данным
- •Использование ms Query
- •Код записанного макроса
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Что такое ado
- •Объекты доступа к базам данных
- •Использование ado
- •Создание ссылки на библиотеку ado
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Вставка полей в экранную форму
- •Перемещение по записям
- •Редактирование данных
- •Добавление средства поиска
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Что такое автоматизация
- •Основы автоматизации
- •Ссылка на библиотеку объектов приложения-сервера
- •Просмотр библиотеки объектов
- •Создание экземпляра приложения-сервера
- •Использование объектов Microsoft Word
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Автоматическое выполнение процедур
- •Процедуры, выполняемые при наступлении событий
- •Создание надстроек Excel
- •Упражнение
- •Приложение. Ответы Ответы к 1-му часу Тесты
- •Ответы ко 2-му часу Тесты
- •Ответы к 3-му часу Тесты
- •Ответы к 4-му часу Тесты
- •Упражнение
- •Ответы к 5-му часу Тесты
- •Упражнение
- •Ответы к 6-му часу Тесты
- •Упражнение
- •Ответы к 7-му часу Тесты
- •Упражнение
- •Ответы к 8-му часу Тесты
- •Упражнение
- •Ответы к 9-му часу Тесты
- •Упражнение
- •Ответы к 10-му часу Тесты
- •Упражнение
- •Ответы к 11-му часу Тесты
- •Упражнение
- •Ответы к 12-му часу Тесты
- •Упражнение
- •Ответы к 13-му часу Тесты
- •Упражнение
- •Ответы к 14-му часу Тесты
- •Ответы к 15-му часу Тесты
- •Упражнение
- •Ответы к 16-му часу Тесты
- •Упражнение
- •Ответы к 17-му часу Тесты
- •Упражнение
- •Ответы к 18-му часу Тесты
- •Упражнение
- •Ответы к 19-му часу Тесты
- •Упражнение
- •Ответы к 20-му часу Тесты
- •Упражнение
- •Ответы к 21-му часу Тесты
- •Упражнение
- •Ответы к 22-му часу Тесты
- •Упражнение
- •Ответы к 23-му часу Тесты
- •Упражнение
- •Ответы к 24-му часу Тесты
- •Упражнение
Функция InputBox
Функция MsgBox хороша, когда от пользователя надо получить простые данные - ответы типа Да-Нет или ОК-Отмена. Если необходимо ввести число или текст, то применяется функция InputBox. Эта функция отображает диалоговое окно ввода, содержащее поле ввода и поясняющий текст. Функция InputBox имеет следующий синтаксис:
InputBox приглашение[, заголовок] [, по_умолчанию] [, хпоз] [, yпоз] [, файл_справки, содержание])
Эта функция требует обязательного задания только аргумента приглашение. Так же, как и в функции MsgBox, значением аргумента приглашение служит текстовая строка, которая отображается в диалоговом окне ввода в качестве сообщения.
Аргумент заголовок используется для задания текста, который помещается в строке заголовка окна ввода. Если этот аргумент не задан, то в строке заголовка отображается Microsoft Excel.
Аргумент по_умолчанию задает значение, которое отображается по умолчанию в поле ввода, пока пользователь не введет свое значение. Если этот аргумент опустить, то поле ввода отображается пустым.
Необязательные аргументы xпоз и yпоз задают положение окна ввода на экране. Аргументы файл_справки и содержание используются в том случае, если вы создаете для своего приложения собственную систему справки.
Возвращаемым значением функции InputBox является значение, введенное пользователем в поле ввода. Для иллюстрации использования этой функции выполните следующий пример.
-
Вставьте новую подпрограмму в текущий модуль и назовите ее ПримерВвода.
-
Введите следующий код:
Dim iResult As Integer
iResult = InputBox(“Введите число:”)
MsgBox iResult
ActiveCell.Value = iResult
Этот код открывает окно ввода для ввода числа, которое затем будет отображено в окне сообщения и помещено в текущую ячейку рабочего листа.
-
Нажмите клавишу <F5> для выполнения процедуры. Отобразится окно ввода (рис. 5.3).
-
Введите число и нажмите клавишу <Enter>. Открывшееся окно сообщения покажет введенное вами число.
-
Щелкните на кнопке ОК. Окно сообщения закроется.
-
Перейдите в рабочую книгу. В активной ячейке рабочего листа вы увидите введенное число.
Если вы заглянете в справочную систему VBA, то прочитаете, что функция InputBox возвращает строковое (текстовое) значение. Это не совсем точно. В последней версии Visual Basic (и, следовательно, VBA) тип возвращаемого значения определен как Variant, т.е. тип определяется введенным значением. Иначе как бы сработала наша процедура, где переменная iResult объявлена как Integer? Если пользователь щелкнет на кнопке Отмена, то в этом случае функция InputBox возвращает строку нулевой длины (“ ”).
Рис. 5.3. Окно ввода готово к вводу числа
Метод InputBox
Excel предлагает еще один путь получения данных от пользователя, который называется методом InputBox. Метод InputBox на первый взгляд имеет только пару незначительных отличий от функции InputBox. Чтобы разобраться в этих отличиях, рассмотрим сначала синтаксис метода InputBox.
Application.InputBox(приглашение, [заголовок], [по_умолчанию], [слева], [сверху), [файл_справки], [содержание], [тип])
Синтаксис очень похож на синтаксис функции InputBox. Отметим, что оператор начинается со слова Application. Excel является собственником метода InputBox, поэтому здесь присутствует слово Application (приложение). Более подробно суть методов рассмотрена в 8-м часе.
Большинство аргументов вам знакомы. Аргументы слева и сверху играют ту же роль, что и аргументы хпоз и yпоз в функции InputBox.
Основное отличие синтаксиса метода InputBox от синтаксиса одноименной функции заключается в последнем аргументе тип (type). Необязательный аргумент тип позволяет явно указать тип возвращаемого значения. В табл. 5.3 содержатся значения, которые может принимать этот аргумент.
Таблица 5.3. Значения аргумента тип
Значение |
Возвращаемое значение |
0 |
Формула |
1 |
Число |
2 |
Текст (строка) |
4 |
Логические значения, такие как ИСТИНА и ЛОЖЬ |
8 |
Ссылка на ячейку |
16 |
Значение ошибки |
64 |
Массив значений |
Обратите внимание, что в последовательности чисел, задающих значение аргумента тип, есть пропуски, например между числами 4 и 8 или между 16 и 64. Это сделано потому, что можно суммировать значения данного аргумента. Например, если вы хотите, чтобы метод мог возвращать как текст, так и числа, сделайте аргумент тип равным 3 (1 + 2). Если аргумент тип не задан, то метод InputBox по умолчанию возвращает текст. Для демонстрации метода InputBox выполните следующие действия.
-
Выполните процедуру ПримерВвода.
-
Введите букву в поле ввода и нажмите <Enter>. Посмотрим, что получится. Так как вы ввели текст, а не число, то процедура отказывается работать (рис. 5.4), - произошла так называемая ошибка выполнения.
-
Щелкните на кнопке End (Конец), чтобы закрыть окно сообщения и вернуться в редактор Visual Basic.
-
Создайте новую процедуру с названием МетодВвод. Эта процедура будет использовать метод InputBox.
-
В новую процедуру введите следующий код:
Dim iResult As Integer
iResult = Application.InputBox _
("Введите число:", , , , , , , 1)
MsgBox iResult
ActiveCell.Value = iResult
Запятые в выражении Application.InputBox бронируют" места для тех аргументов, которые мы опустили. Последний аргумент, тип, имеет значение 1. Это показывает, что допустимыми вводимыми значениями являются только числа. Отметьте, что единственное отличие кода этой процедуры от кода процедуры ПримерВвода заключается в операторе Application.InputBox.
-
Поместите курсор внутри кода процедуры МетодВвод и нажмите <F5> для выполнения процедуры. Появится окно ввода.
-
Введите букву А и нажмите <Enter>. В отличие от процедуры ПримерВвода теперь не будет сообщения об ошибке выполнения, а появится окно с сообщением о причине возникшей проблемы - Неверное число (рис. 5.5).
-
Для закрытия окна сообщения нажмите клавишу <Enter>.
-
Введите число 7 и нажмите <Enter>. Отобразится окно сообщения с числом 7. Щелкните на кнопке ОК, чтобы закрыть это окно.
Рис. 5.4. Это окно сообщения указывает на ошибку выполнения процедуры. Нельзя допустить, чтобы пользователи вашего приложения получали такие окна сообщений!
Вы видели, что одним из преимуществ метода InputBox является возможность внутренней обработки ошибок. Другое отличие метола от функции заключается в значении, которое они возвращают, когда пользователь щелкает на кнопке Отмена. В этом случае функция InputBox возвращает строку нулевой длины, а метод InputBox - значение False (Ложь).
Рис. 5.5. Пользователю деликатно сообщают, что введено неверное число.