
- •Часть 1.
- •1.1 Введение
- •1.2 Правила оформления конструкций языка vba в общем виде
- •1.3 Идеология визуальных языков
- •1.4 Основные понятия визуальных языков
- •1.5 Дополнительные понятия языка vba
- •2 Переменные и константы
- •2.1 Структура модуля
- •2.2 Объявление переменных и констант
- •Имя_Модуля1.Имя_Поля
- •2.2.2 Неявное и явное объявление переменных ( Оператор Option Explicit )
- •2.3 Неименованные константы
- •2.4 Оператор присваивания
- •2.4.1 Арифметические выражения
- •2.4.2 Строковые выражения
- •2.4.3 Логические выражения
- •Сравнение строковых переменных в логических выражениях
- •2.4.4 Выражения Data
- •2.4.5 Выражения Variant
- •2.4.6 Смешанные выражения
- •2.5 Функции определения типа переменной
- •2.6 Функция форматного преобразования переменной в строковый формат
- •3 Подпрограммы ( процедуры и функции )
- •3.1 Описание подпрограмм
- •3.2 Входные параметры подпрограммы
- •3.3 Вызов подпрограмм
- •3.3.1 Изменение вида входного параметра при вызове подпрограммы
- •3.4 Описание событийной процедуры объекта
- •3.5 Рекурсивные подпрограммы (процедуры и функции)
- •4 Операторы vba
- •4.1 Условный оператор If
- •4.2 Оператор выбора Case
- •4.3 Операторы цикла
- •4.3.1 Циклы for Оператор цикла For .. Next
- •Оператор цикла For Each .. Next
- •Досрочный выход из циклов For
- •4.3.2 Оператор цикла While .. Wend
- •4.3.3 Циклы do Оператор цикла Do While .. Loop
- •Оператор цикла Do .. Loop Until
- •Другие циклы do
- •Досрочный выход из циклов do
- •4.4 Оператор еnd (досрочное завершение программы)
- •4.5 Оператор Exit (досрочный выход из подпрограмм и циклов)
- •4.6 Оператор перехода goto
- •4.7 Оператор On Error (обнаружения ошибок)
- •4.8 Оператор With (обращения к полям структурированных типов, а так же к методам и к потомкам объектов)
- •4.9 Оператор Set (установка и снятие указателя )
- •4.10 Оператор New (создание экземпляров)
- •4.11 Оператор DoEvents (Прерывание работы подпрограммы)
- •4.12 Оператор Shell (Запуск исполняемых файлов)
- •4.13 Оператор AppActivate (Активизация окна другой программы)
- •4.14 Оператор SendKeys (Эмуляция нажатия на клавиши)
- •4.15 Вложенность структур операторов
- •5 Структурированные типы vba
- •5.1 Введение
- •5.2 Массивы
- •5.2.1 Статический массив
- •5.2.2 Динамический массив
- •5.2.3 Объявление массива через функцию Array
- •5.2.4 Функции определения размерности массива
- •5.2.5 Опрос, ввод и вывод в цикле ячеек массива
- •5.2.6 Массивы массивов
- •5.2.7 Поиск максимума и минимума в массиве
- •5.2.8 Сортировка массива
- •5.2.9 Оператор высвобождения памяти занятой динамическим массивом и обнуления ячеек статического массива (Erase)
- •5.3 Записи ( и массивы записей)
- •5.3.1 Запись с константными полями
- •5.4 Семейства (Коллекции)
- •5.5 Объекты
- •5.5.1 Введение
- •5.5.2 Объект Application
- •5.5.3 Объекты ActiveWorkbook, ThisWorkbook, Workbooks (связь с книгой Excel)
- •5.5.4 Объекты ActiveSheet, Worksheets (связь с листом книги Excel)
- •5.5.5 Объекты Rows, Columns ,Range, Cells, Selection, ActiveCell (связь со строками, столбцами и ячейками листа Excel)
- •5.5.6 Элементы управления
- •Элемент управления CommandButton (Кнопка)
- •Элементы управления CheckBox, OptionButton (Флажок, Переключатель)
- •Элемент управления TextBox (текстовый редактор)
- •Элементы управления ListBox, ComboBox (Список ,Поле со списком)
- •Элементы управления ScrollBar ,SpinButton (Полоса прокрутки ,Счетчик)
- •Элемент управления Imаge (Рисунок)
- •5.6 Объект Форма
- •6 Диалоги
- •7 Работа с файловой системой
- •7.1 Введение
- •7.1.3 Работа с файловой системой через программу Мой компьютер (My Computer)
- •7.2 Функция dir ( Просмотр содержимого директории и определение наличия файла на диске)
- •7.3 Работа с дисковым пространством
- •7.3.1 Дополнительные функции для работы с дисковым пространством
- •7.4 Работа с файлами
- •7.4.1 Работа с текстовым файлом
- •7.4.2 Работа с двоичным файлом
- •7.4.3 Работа с файлом произвольного типа данных
- •7.5 Просмотр содержимого ярлыка
- •7.6 Функция Environ (Определение местонахождения служебных директорий Windows)
- •Оглавление
- •2 Переменные и константы 9
- •3 Подпрограммы ( процедуры и функции ) 34
- •4 Операторы vba 47
- •5 Структурированные типы vba 70
- •5.3 Записи ( и массивы записей) 83
- •5.4 Семейства (Коллекции) 85
- •5.5 Объекты 87
- •6 Диалоги 119
- •7 Работа с файловой системой 122
- •Часть 1
2 Переменные и константы
2.1 Структура модуля
Каждый модуль в VBA состоит из двух областей:
General (Общая область) – область для описания глобальных переменных, а так же для объявления не событийных подпрограмм. Эта область состоит из двух соответствующих подобластей:
Declaration (Описания) - раздел описания глобальных переменных, констант и полей модуля (этот раздел расположен в самом верху редактора модуля)
Раздел описания не событийных подпрограмм – расположен под разделом описания, не событийные процедуры могут описываться вперемешку с событийными, но через специальное, правое поле со списком редактора модуля, не событийная процедура выбирается только в разделе General (Общая область), когда эта область выбрана из левого поля со списком редактора модуля.
Область событийных процедур объектов – расположена под разделом описания. Событийные процедуры могут описываться вперемешку с не событийными, но через специальное, правое поле со списком редактора модуля, событийная процедура выбирается только тогда, когда выбрано имя объекта в левом поле со списком редактора модуля.
-
В
ыбор Общей области или имени объекта
В
ыбор раздела Описания или имени не событийной подпрограммы, а так же имени события происходящего в выбранном объекте
Програм-
мный
код модуля
Кнопка, утанавливающая режим просмотра только текущей подпрограммы в редакторе модуля
Кнопка, утанавливающая режим просмотра всех подпрограмм в редакторе модуля
Рис.1. Вид окна редактора модуля
2.2 Объявление переменных и констант
Переменные и именованные константы являются глобальными для всех процедур и функций внутри модуля, если они описаны в общей области модуля в разделе описания, и являются локальными, если они описаны внутри процедуры или функции. Объявляются переменные служебным словом Dim , а константы, служебным словом Const.
Формат описания переменной:
Dim имя_переменной1 [as тип], имя_переменной2 [as тип]
Если служебное слово as c типом опущены, то переменная имеет тип Variant.
Формат описания констант:
Const Имя_константы1 [as тип] = Значение
В качестве значения константы может быть использована именованная или неименованная константа, а так же выражения содержащие константы.
Типы переменных и констант |
|||
Имя типа |
Разновидность Типа |
Диапазон значений |
Размерность |
Byte |
Байт |
От 0 до 255 |
1 байт |
Integer |
Короткое целое |
От –32768 до 32767 |
2 байта |
Long |
Длинное целое |
От –2147483648 до 2147483647 |
4 байта |
Single |
Вещественное одинарной точности |
От 1,5*10-45 до 3,4*1038 |
4 байта |
Double |
Вещественное двойной точности |
От 5,0*10-324 до 1,7*10308
|
8 байт |
Currency |
Денежный (числовая переменная, которая содержит четыре фиксированных разряда после запятой) |
От –922 337 203 685 477,5808 до 922 337 203 685 477,5807 |
8 байт |
Boolean |
Логический |
True или False |
2 байта |
Date |
Дата |
Хранит в себе календарную дату и(или) время, значение которого обычно задают в строковом формате. |
8 байт |
String |
Строковый |
Состоит из группы символов, каждый символ строки содержится в 1 байте и кодируется определенным целым числом, большим, либо равным 0. Символ строки имеет свой порядковый номер, нумерация символов начинается с 1. |
От 0 до 65535 байт |
String * N |
Строка фиксированной длины |
Состоит из N символов. Если данной строке присвоено символов меньше чем N, то к строке автоматически добавляются пробелы. Если больше чем N, излишек символов от строки отбрасывается. По умолчанию данная строка состоит из N символов имеющих код 0. |
N байт |
Variant |
Универсальный |
Любой неструктурированный тип в этой переменной представляется в виде строки символов. |
От 0 до 65535 байт |
Object |
Объектный |
Переменная данного типа может использоваться как указатель на объект, или для создания экземпляра объекта. Тип перешел из более ранних версий языка VB, данный тип успешно перекрывается типом Variant. |
|
В VBA нет способа объявления глобальных переменных для всех модулей проекта, но существует возможность объявить поле модуля, которое будет использоваться как переменная. Объявляются поля модуля так же в общей области, следующим способом:
Private / Public Имя_поля_модуля [as тип]
Если внутри модуля макросов поле объявлено служебным словом Public, оно доступно для всех модулей проекта, Private – объявляет локальное поле модуля.
Правильным обращением к данному полю из другого модуля было бы следующим: