
- •Часть 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
Часть 1
Под общей ред. В.В. Сидорова
Свободный тем. План 200__п._____
____________________________________________________________
Подписано в печать Формат
Объем ___ уч.-изд.л. Тираж___экз.
Заказ № _____
____________________________________________________________
Отдел оперативной полиграфии РГУ нефти и газа им. И.М.Губкина 119991, Москва, ГСП-1, Ленинский Проспект, 65.
Для объявление локальных переменных помимо служебного слова Dim может использоваться служебное слово Static, об использовании которого мы рассказали в главе Подпрограммы (Процедуры и функции) –описание подпрограмм.
Все сказанное о полях модуля справедливо и для констант модуля макросов, но чтобы константа являлась глобальным полем модуля макросов, необходимо, что бы ее объявление начиналось со служебного слова “Public”:
Public Const Имя_константы [as тип] = Значение
Естественно, что глобальное, константное поле модуля будет доступно только для чтения.
Операторы Defтип как и специальный символ определяющий тип переменной перешел в язык VBA из старых версий Basic. Наиболее удобно при отладке программы использовать необъявленные переменные типа Variant. Но после отладки программы необходимо для ускорения работы программы явно объявить тип таких переменных. Особенно если они используются в математических выражениях или данные переменные являются числовыми переменными цикла.
Если переменная типа Variant является входным параметром подпрограммы, то ей можно присваивать даже значение переменной структурированного типа (cм. СТРУКТУРИРОВАННЫЕ ТИПЫ VBA, ПОДПРОГРАММЫ ).
О массивах рассказано нами в главе СТРУКТУРИРОВАННЫЕ ТИПЫ VBA
В VBA Допускается вызывать функцию как процедуру. Правда, во многих случаях это не имеет никакого смысла. Но в некоторых ситуациях имеет. Например, функция окна сообщения MsgBox, содержащая только одну кнопку ОК вызывают как процедуру (см. Диалоги)
Об операторе If и цикле For each, который рассматривается ниже, вы можете посмотреть в следующей главе книги.
Статитческий массив обычно не имеет специального термина, который определяет его разновидность, но мы применили этот термин в противовес термину динамический массив.
Возможно объявить массив как глобальное поле модуля, в разделе объявления глобальных переменных служебными словами Private, Public. Но Public массив разрешается объявлять только в модуле макросов. Внутри подпрограммы массив так же может объявляться служебным словом Static.
Возможно объявить динамический массив как глобальное поле модуля, в разделе объявления глобальных переменных служебными словами Private, Public. Но динамический массив Public разрешается объявлять только в модуле макросов. Размерность динамического массива Public и Private меняют точно так же, как и размерность динамического массива объявленного служебным словом Dim.
* Если массив 3-х и более мерный, применяют N вложенных циклов и N индексов.
Даже в многострочном режиме не работает кнопка Enter при редакции текста в TextBox. Чтобы ввести новую строку в этом объекте нужно нажать клавишу перемещения курсора вниз. Если даже это не поможет, то вам придется добавить программный код в событийную процедуру соответствующего объекта:
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
TextBox1.SelText = Chr(13) + Chr(10)
KeyCode = 0
End If
End Sub
В MS Office 2000, и, в более старших версиях, есть возможность запускать форму не приостанавливая работу Excel, в этих версиях метод Show может иметь входной параметр со следующими значениями:
0 – окно не модальное (форма не приостанавливает работу Excel)
1– окно модальное (форма приостанавливает работу Excel)
Созданную папку или файл обычно переименовывают
О единицах измерения объема дисковой памяти рассказано в следующем параграфе данной главы. Длина файла и объем дискового пространства измеряются в одних и тех же единицах.
К сожалению мы не нашли лучшего термина для обозначения этого типа файлов, с которым работает программист VBA. Он не может быть назван типизированным, т.к. при его объявлении не указывается тип записываемой в него информации. Термин “Произвольный”, который мы нашли в справочной системе редактора VBA показался нам черезчур не полным.
Как прочитать такие символы из текстового файла, рассказано нами в следующем параграфе