
- •Часть 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
4.14 Оператор SendKeys (Эмуляция нажатия на клавиши)
Позволяет эмулировать нажатие на клавиши в активном окне приложения :
SendKeys “Клавиши” [, Wait]
где
“Клавиши” - Специально заданные клавиши в строковом формате (о формате смотрите в Приложение 2 - Программное назначение управляющих клавиш макросам)
Wait – логическое выражение, определяющее режим прерывания работы той процедуры, которая передает коды нажатых клавиш активному окну. Если данный параметр равен False, то работа вызывающей процедуры не прерывается после передачи кодов нажатых клавиш активному окну (выполняется по умолчанию входного параметра). Если указанный параметр имеет значение True, то работа вызывающей процедуры приостанавливается пока коды “нажатых” клавиш не обработались в активном окне.
4.15 Вложенность структур операторов
Структура одного оператора может быть вложена в другую однотипную, или разнотипную ей структуру.
Пример1:
‘Подсчет суммы целых, четных чисел 1-100
S =0
For i =1 to 100
If i mod 2 = 0 then
S =S + i
End if
Next i
Пример2:
‘Вывод в текущий лист Excel таблицы умножения
For i =1 to 9
For j =1 to 9
Cells( i , j ).Value = i & “*” & j & “=” & i*j
Next j
Next i
В Примере1 в оператор IF вложен внутрь оператора цикла For. В Примере2 один оператор цикла For вложен внутрь другого оператора цикла For.
5 Структурированные типы vba
5.1 Введение
К структурированным типам можно отнести массивы, записи, семейства, кроме того, в объектах тоже просматривается элементы структурированного типа. Общее между этими типами состоит в том, что при обращении к переменным данного типа, необходимо не только обращаться к ее имени, но и указывать, особым образом, номер или имя соответствующей структуры.
5.2 Массивы
Представляют собой переменную, состоящую из ячеек одного типа. Имеются динамические массивы, в которых количество ячеек может меняться входе выполнения программы, и статические, количество ячеек в которых строго определено. Массивы бывают одномерными и многомерными. В многомерных массивах к ячейке обращаются используя несколько индексов разделенных запятыми, в одномерном только один индекс.
В VBА возможно объявить одномерный динамический массив одновременно с объявлением значений его ячеек через функцию Array. Но в этом случаи ячейки динамического массива могут быть только типа Variant.
5.2.1 Статический массив
Формат объявления статического массива:
DIM Имя_Массива(размерность) [as тип]
Где
Имя_Массива – имя объявляемого массива
Размерность – одна размерность или несколько размерностей разделенных запятыми
as тип – объявление типа ячейки массива, если тип опущен, ячейки массива имеют универсальный тип Variant.
Размерность можно задать двумя способами:
Положительной целой неименованной или именованной константой, определяющей количество ячеек в массиве от нижней границы по умолчанию до указанного числа
Указать диапазон ячеек:
НижняяГраница to ВерхняяГраница
Пример объявления массивов:
Dim A(9), B(1 to 4), C(1 to 4, 1 to 3)
В данном примере объявлен одномерный массив A с ячейками имеющими индексы в диапазоне 0-9, одномерный массив В с ячейками имеющими индексы в диапазоне 1-4 и двумерный массив С, имеющий четыре строки с индексами 1-4, и три столбца с индексами 1-3.
При объявлении размерности массива первым способом его нижняя размерность по умолчанию будет всегда начинаться с 0-ой ячейки, имеется возможность объявить нижнюю размерность массива на 1-ую ячейку или 0-ую следующим оператором:
Option Base 0 / 1
Где
Option Base – оператор перезадающий нижнюю размерность массива по умолчанию.
0 / 1 – число 0 или 1 задающее нижнюю размерность массива по умолчанию.
Оператор Option Base может применяться в модуле только один раз, и только до объявления массивов.
Пример:
Option Base 1
Dim A(9), C(5,3)
В данном примере объявлен одномерный массив A с ячейками имеющими индексы в диапазоне 1-9, и двумерный массив С, имеющий пять строк с индексами 1-5, и три столбца с индексами 1-3.
Обращаются к ячейки массива указывая имя массива, а за ним в скобках индексы ячеек:
A(1) = 10
C(2,3) =5
В примере выше в 1 ячейку массива A занесено число 10. А в ячейку массива С, находящуюся на пересечении второй строки и третьего столбца число 5. В качестве индексов массива могут быть использованы не только неименованные и именованные целочисленные константы, но и переменные целого типа, а так же целочисленные выражения:
Dim C(1 to 4, 1 to 3)
i = 2
j = 3
C( i + 1, j)=5
В данном примере значения 5 присвоено ячейке С( 3 , 3 )