- •Содержание
- •Раздел 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. Основные формы записи алгоритмов
- •Понятие "алгоритм"
- •Классификация алгоритмов
- •Способы записи алгоритмов
- •Запись на естественном языке
- •Изображение алгоритма в виде графических символов
- •Представление основных типов алгоритмов в виде блок-схем
Панели инструментов Стандартная панель инструментов
Рис. 2.9. Стандартная панель инструментов Visual Basic
View Microsoft Excel – переход на активный лист рабочей книги;
Insert Userform – вставка объекта Userform (форма);
|
Run Macro запускает процедуру, внутри которой установлена точка вставки. Если точка вставка вне процедур или лист с процедурами неактивен, то предлагается выбрать запускаемую процедуру из меню (см. рис. 1.3);
Break Macro приостанавливает работу процедуры или продолжает ее после сделанной паузы;
Stop Macro прерывает выполнение процедуры;
Design Mode – вход/выход из режима Конструктора;
Project Explorer открывает окно проекта;
Properties Window открывает окно свойств текущего объекта;
Object Browser – просмотр объектов;
Toolbox высвечивает панель элементов управления форм.
Остальные пиктограммы имеют стандартное предназначение.
Панель инструментов отладки
Рис. 2.10. Панель отладки (Debug)
Design Mode – вход/выход из режима Конструктора;
Toggle Breakpoint – установка контрольной точки;
Step Into – переход на следующую команду текущей и вызываемой процедур;
Step Over – переход на следующую команду текущей процедуры без пошагового выполнения вызываемых процедур. Вызванные процедуры и функции выполняются целиком без остановов на командах;
Step Out – выход из вызванной процедуры и переход к следующей команде исходной процедуры;
высвечивание на экране окон редактора (Locals, Immediate, Watches).
Quick Watch – высвечивание окна значений отслеживаемой переменной;
Call Stack – высвечивание структуры вызовов процедур (стек процедур).
Раздел 3.Переменные и типы данных Объявление переменных
Данные, используемые в процедурах, разделяются на два основных вида: константы и переменные. Для обозначения констант и переменных служит идентификатор.
Идентификатор (имя) константы или переменной определяет ее адрес и способ размещения в памяти. Идентификатор состоит из латинских букв, цифр или знаков, причем первый символ идентификатора всегда буква.
Внимание
Нельзя использовать служебные слова и стандартные имена как идентификаторы.
Нельзя использовать пробелы и точки в качестве разделителей частей идентификаторов.
Символы объявления типа, например, "#" можно использовать только как последний символ идентификатора (см. ниже таблицу суффиксов).
Строчные и прописные буквы в идентификаторе считаются равными.
Длина идентификатора не может быть более 255 символов. Длина имен объектов не должна превышать 40 символов.
Не рекомендуется использовать в идентификаторе буквы русского языка, несмотря на то, что это допускается в локализованных версиях MS Office. Применение не латинских символов в идентификаторах может привести к проблемам с переносимостью приложения на другие компьютеры.
Константа – постоянное значение, используемое в программе. Константам можно присвоить идентификаторы и использовать их в качестве переменных, имеющих постоянные значения. Символьные константы заключаются в кавычки, а константы, представляющие даты, заключаются в символы решетка (#). Например, #1.12.2006#.
Прежде чем использовать константу в тексте модуля, ее обязательно следует объявить. Синтаксис объявления константы Const name=expression
Например, Const pi=3.14
В языке имеются встроенные константы, идентификаторы которых зарезервированы. Использование констант улучшает читабельность программы и уменьшает вероятность ошибок при использовании постоянных значений. Идентификаторы констант VB начинаются с vb, а константы Excel VBA начинаются с xl. Например, для перехода на новую строку часто используются константы vbLf, vbCr, vbCrLf. Для просмотра полного перечня встроенных констант задайте поисковую строку Constants в Object Browser.
Переменная – это величина, которая хранится в памяти и значение которой может изменяться во время выполнения программы. Каждая переменная или константа имеет тип, соответствующий типу данных, сохраняемых в ней.
В VBA, как и в любом языке, используются данные различных типов: числовые, строковые, логические и т.п. – всего 11 элементарных типов. Допустимо использование данных пользовательского типа.
х
Тип данных |
Размер в байтах |
Разрядность |
Диапазон значений |
|
Boolean (логическое) |
2 |
5 |
True, False |
|
Byte (байт) |
1 |
3 |
от 0 до 255 |
|
Integer (целое) |
2 |
5 |
от –32768 до 32767 |
|
Long (длинное целое) |
4 |
10 |
от –2147483648 до 2147483647 |
|
Single (действительное, одинарная точность) |
4 |
7 |
от –3.402823E+38 до –1.401298E-45 и от 1.401298E-45 до 3.402823E+38 |
|
Double (действительное, двойная точность) |
8 |
15 |
от –1.79769313486232E+308 до –4.94065645841247E-324 и от 4.94065645841247E-324 до 1.79769313486232E+308 |
|
Currency (фиксированная точка) |
8 |
10 |
от –922337203685477.5808 до 922337203685477.5807 |
|
Date (дата) |
8 |
от 01.01.100 до 31.12.9999 |
||
String (символьная строка) |
10 байт + 1 байт на символ для строк переменной длины Длина строки для строк фиксированной длины |
до 65400 символов |
||
Object (объект) |
4 |
Указатель на любой объект |
||
Variant (любое значение) |
16 байт для числовых значений |
См. диапазон значений для Double
|
||
22 байта плюс длина строки для символьных значений |
до 65400 символов |
|||
User-defined data type (пользовательский тип данных) |
Размер определяется элементами |
Разрядность и диапазон каждого элемента, входящего в пользовательский тип, определяется типом данных элемента |
В языке VBA предусмотрено предварительное объявление переменных, участвующих в программе, но оно не является обязательным.
Важно
Переменная может принимать значения только одного типа, который указывается при ее описании или предполагается по умолчанию.
Тип переменной накладывает ограничения на ее возможные значения и определяет разрешенные операции.
Присвоение переменной значения, не соответствующего ее типу, вызывает преобразование значения или может привести к ошибке.
Для объявления переменных используются операторы Dim, Private, Public и Static.
Синтаксис оператора Dim
Dim VariableName [As DataType]
VariableName – идентификатор переменной,
DataType – тип данных. Необязательный параметр. По умолчанию Variant.
Операторы Private, Public и Static имеют такой же синтаксис, что и оператор Dim. Их использование разбирается ниже.
Примеры
Dim p As Integer Dim q As String Dim r As Variant |
Каждая переменная объявлена отдельным оператором на отдельной строке |
|||
Dim p As Integer, q As String, r As Variant |
Несколько объявлений переменных в одной строке. Разделитель – запятая |
|||
Dim p, q, r As Integer |
Только переменная r будет определена как целая, остальные будут иметь тип Variant |
|||
|
|
|
||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
Суффикс |
Тип |
% |
Integer |
& |
Long |
! |
Single |
# |
Double |
@ |
Currency |
$ |
String |
VBA позволяет включать в идентификаторы переменных суффиксы, определяющие тип переменной. Например, Dim Name$ определяет переменную Name$ как стринговую.
В таблице справа представлены суффиксы и типы переменных, объявляемых с помощью добавления суффикса в конец идентификатора.
Внимание
Операторы объявления переменных относятся к неисполняемым операторам, т.е. они содержат некоторую информацию для VB, не выполняя никаких действий.
Оператор объявления переменной может стоять в любом месте программы, но непременно раньше использования определяемой переменной.
Объявление переменных в начале процедуры или модуля улучшает читабельность программы.
Локальные переменные (см. ниже) могут быть объявлены неявно (контекстуально). Обычно это происходит, если имя переменной присутствует слева в операторе присваивания или используется в качестве переменной цикла. Переменная, объявленная неявно, всегда имеет тип Variant.