- •2.1. Алфавит и словарь языка
- •2.2. Переменные
- •2.3. Константы
- •2.4. Строковые переменные
- •2.5. Массивы
- •2.6. Пользовательские типы данных
- •2.7. Операции VBA
- •2.8. Объектная модель Excel
- •2.8.1. Свойства и методы объектов
- •2.8.2. Отображение объектной модели Excel
- •2.8.2.1. Иерархия объектной модели
- •2.8.2.2. Ссылка на объекты в коде VBA
- •2.8.3. Работа с объектами
- •2.8.3.1. Задание свойств объекта
- •2.8.3.2. Использование методов объекта
- •2.8.3.3. Переменные-объекты
- •2.8.3.4. Коллекции
- •2.8.3.5. Метод Add
- •2.8.3.6. Свойство Count
- •2.8.4. Свойства и методы основных объектов Excel
- •2.8.4.1. Объект Application
- •2.8.4.2. Объект Worksheet
- •2.8.4.3. Объект Range
- •2.8.5. Просмотр объектов
- •2.8.6. Использование справочной системы
- •2.8.6.1. Использование функциональной клавиши F1
- •2.8.6.2. Использование помощника
- •2.9. Ввод и вывод данных
- •2.9.3. Метод InputBox
- •2.9.4. Объединение текстовых строк
- •2.10. Концепция событий Excel
- •2.10.1. Типы событий Excel
- •2.10.2. События объекта Workbook
- •2.10.3. События объекта Worksheet
- •2.10.4. События объекта Application
- •2.10.5. События объекта UserForm
- •2.10.6. События, не связанные с конкретными объектами
- •2.10.6.1. Метод OnKey
- •2.10.6.2. Событие OnTime
- •2.11. Формы пользователя
- •2.11.1. Свойства, методы и события экранных форм
- •2.11.1.1. Некоторые свойства форм
- •2.11.1.2. Некоторые методы форм
- •2.11.1.3. Некоторые события форм
- •2.11.2. Элементы управления
- •2.11.2.1. Элемент управления Label (Надпись)
- •2.11.2.1.1. Окно свойств формы
- •2.11.2.2. Элемент управления CommandButton (Кнопка)
- •2.11.2.3. Элемент управления TextBox (Текстовое поле)
- •2.11.2.4. Элемент управления ComboBox (комбинированный список)
- •2.11.2.5. Элемент управления ListBox (список)
- •2.11.2.6. Элемент управления CheckBox (Флажок)
- •2.11.2.7. Элемент управления ToggleButton (Выключатель)
- •2.11.2.8. Элемент управления OptionButton (Переключатель)
- •2.11.2.9. Элемент управления Image (Рисунок)
- •2.11.2.12. Элемент управления RefEdit (Поле со свёртыванием)
- •2.11.2.13. Элементы управления на рабочем листе
- •2.12. Инструкции VBA
- •2.12.1. Оператор присваивания
- •2.12.2. Инструкция Set
- •2.12.3. Циклы
- •2.12.3.1. Инструкция For… Next
- •2.12.3.2. Инструкция While…Wend
- •2.12.3.3. Инструкция Do... Loop
- •2.12.3.4. Инструкция For Each…Next
- •2.12.4. Инструкции перехода
- •2.12.4.1. Инструкция условного перехода If…Then…Else
- •2.12.4.2. Инструкция Select…Case
- •2.12.4.3. Инструкция безусловного перехода GoTo
- •2.12.4.4. Инструкции перехода к обработчику ошибок On Error
- •2.12.4.5. Инструкции прерывания выполнения блока Exit
- •2.13. Функции VBA
- •2.13.1. Встроенные функции
- •2.13.1.1. Математические функции
- •2.13.1.2. Функции преобразования данных
- •2.13.1.3. Функции даты и времени
- •2.13.1.4. Строковые функции
- •2.13.1.5. Примеры использования функций VBA
- •2.13.1.5.1. Удаление ненужных символов
- •2.13.1.5.2. Определение длины строки
- •2.13.1.5.3. Сравнение и поиск строк
- •2.13.1.5.4. Выделение части строки
- •2.13.1.5.5. Форматирование значений данных
- •2.13.2. Функции, определённые пользователем
- •2.14. Файлы VBA
- •2.14.1. Типы файлов в VBA
- •2.14.2. Открытие и закрытие файла
- •2.14.3. Ввод данных в файл последовательного доступа
- •2.14.4. Вывод данных из файла последовательного доступа
- •2.14.5. Работа с файлом произвольного доступа
- •2.15. Создание процедуры
- •2.16. Выполнение процедуры
- •2.17. Сохранение процедуры
- •2.18. Запись последовательности действий пользователя
- •2.19. Просмотр кода макроса
- •3.1. Тестирование и отладка как этап разработки приложений
- •3.1.1. Отладка
- •3.1.1.1. Режим останова
- •3.1.1.2. Использование окна Immediate
- •3.1.1.2.1. Просмотр значений в окне Immediate
- •3.1.1.3. Пошаговое выполнение программ
- •3.1.2. Исправление ошибок
- •Библиографический список
- •Оглавление
97
1:
MsgBox "Выполнен переход на строку 1"
2:
MsgBox "Выполнен переход на строку 2" End Sub
2.13. Функции VBA
Функция – это подпрограмма, которая выполняет действия и возвращает единственное значение. В VBA различают следующие виды функций:
встроенные функции,
функции, определённые пользователем.
2.13.1.Встроенные функции
Ниже представлены таблицы с кратким описанием наиболее часто используемых функций VBA.
2.13.1.1. Математические функции
N означает любое численное выражение. Все аргументы функций являются обязательными, если не указано иначе.
|
|
|
|
|
|
Функция(аргумент) |
|
Действие |
|
|
|
|
|
|
|
Abs(N) |
|
Возвращает абсолютное значение аргумента N |
|
|
|
|
|
|
|
Atn(N) |
|
Возвращает арктангенс N (радиан) |
|
|
|
|
|
|
|
Cos(N) |
|
Возвращает косинус N (радиан) |
|
|
|
|
|
|
|
|
|
Возвращает целую часть N. Не округляет число, а отбрасывает лю- |
|
|
Fix(N) |
|
бую дробную часть. Если N отрицательное число, то возвращается |
|
|
|
|
ближайшее отрицательное целое большее, чем или равное N |
|
|
|
|
|
|
|
|
|
Возвращает случайное число: аргумент является необязательным. |
|
|
Rnd(N) |
|
Используется только после инициализации генератора случайных |
|
|
|
|
чисел (оператор Randomize) |
|
|
|
|
|
|
|
Sgn(N) |
|
Возвращает знак числа: -1, если N – отрицательное; 1, если N – по- |
|
|
|
ложительное; 0, если N равно 0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
Sin(N) |
|
Возвращает синус N (радиан) |
|
|
|
|
|
|
|
Sqr(N) |
|
Возвращает корень квадратный из N. Если N является отрицатель- |
|
|
|
ным числом – возвращается ошибка времени исполнения |
|
|
|
|
|
|
|
|
|
|
|
|
|
Tan(N) |
|
Возвращает тангенс N (радиан) |
|
|
|
|
|
|
2.13.1.2. Функции преобразования данных
N – любое численное значение; S – любое строковое значение; E – выражение любого типа. Аргументы каждой функции являются обязательными, если не указано иначе.
|
|
98 |
|
|
|
|
|
|
|
|
Функция(аргумент) |
|
Действие |
|
|
|
|
|
|
|
|
|
Возвращает строку из одного символа, соответствующего коду сим- |
|
|
Chr(N) |
|
вола N, который должен быть числом между 0 и 255 (обратна пре- |
|
|
|
|
дыдущей) |
|
|
|
|
|
|
|
|
|
Возвращает строку, содержащую значение, представленное выра- |
|
|
Format(E,S) |
|
жением Е, в формате в соответствии с инструкциями, содержащим- |
|
|
|
|
ся в S |
|
|
|
|
|
|
|
|
|
Возвращает целое типа Long, представляющее значение основных |
|
|
RGB(N,N,N) |
|
цветов изображения. N для каждого аргумента должно быть целым и |
|
|
|
|
лежать в пределах от 0 до 255 |
|
|
|
|
|
|
|
Str(N) |
|
Возвращает строку, эквивалентную численному выражению N |
|
|
|
|
|
|
|
|
|
Возвращает численное значение, соответствующее числу, пред- |
|
|
Val(S) |
|
ставленному строкой S, которая должна содержать только цифры и |
|
|
|
|
одну десятичную точку, иначе возвращается 0 |
|
|
|
|
|
|
|
|
|
Возвращает значение типа Date. E может быть любым допустимым |
|
|
CDate(E) |
|
выражением (строкой или числом), представляющим дату в диапа- |
|
|
|
|
зоне 1/1/100 - 12/31/9999 |
|
|
|
|
|
|
|
|
|
Возвращает численное значение типа Integer. Е – любое допустимое |
|
|
CInt(E) |
|
численное или строковое выражение, которое может быть преобра- |
|
|
|
|
зовано в число |
|
|
|
|
|
|
|
|
|
Возвращает численное значение типа String. Е – любое допустимое |
|
|
CStr(E) |
|
численное или строковое выражение, которое может быть преобра- |
|
|
|
|
зовано в число |
|
|
|
|
|
|
2.13.1.3. Функции даты и времени
N – любое допустимое численное значение; D – любое допустимое выражение типа Date (либо выражение, которое может быть преобразовано к типу Date). Аргументы каждой функции являются обязательными, если не указано иначе.
|
|
|
|
|
|
Функция(аргумент) |
|
Действие |
|
|
|
|
|
|
|
Date |
|
Возвращает системную дату |
|
|
|
|
|
|
|
Time |
|
Возвращает системное время |
|
|
|
|
|
|
|
Now |
|
Возвращает системные дату и время |
|
|
|
|
|
|
|
Year(D) |
|
Возвращает целое, являющееся частью выражения типа Date и со- |
|
|
|
держащее год. Год возвращается как число между 100 и 9999 |
|
|
|
|
|
|
|
|
|
|
|
|
|
Month(D) |
|
Возвращает целое, являющееся частью выражения типа Date и со- |
|
|
|
держащее месяц. Месяц возвращается как число между 1 и 12 |
|
|
|
|
|
|
|
|
|
|
|
|
|
Day(D) |
|
Возвращает целое, являющееся частью выражения типа Date и со- |
|
|
|
держащее день. День возвращается как число между 1 и 31 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Возвращает целое, содержащее часы как часть времени, содержа- |
|
|
Hour(D) |
|
щегося в выражении типа Date. Часы возвращаются как число меж- |
|
|
|
ду 0 и 23. Если аргумент не содержит значения времени, то возвра- |
|
|
|
|
|
|
|
|
|
|
щается 0 |
|
|
|
|
|
|
|
|
|
Возвращает целое, содержащее минуты как часть времени, содер- |
|
|
Minute(D) |
|
жащегося в выражении типа Date. Минуты возвращаются как число |
|
|
|
между 0 и 59. Если аргумент не содержит значения времени, то воз- |
|
|
|
|
|
|
|
|
|
|
вращается 0 |
|
|
|
|
|
|
|
|
|
Возвращает значение типа Date, эквивалентное дате, заданной ар- |
|
|
DateValue(E) |
|
гументом Е, который может быть строкой, числом или константой, |
|
|
|
|
представляющей время |
|
|
|
|
|
|
|
|
|
Возвращает значение типа Date, содержащее время, заданное ар- |
|
|
TimeValue(E) |
|
гументом Е, который может быть строкой, числом или константой, |
|
|
|
|
представляющей время |
|
|
|
|
|
|
99
2.13.1.4. Строковые функции
N – любое допустимое численное значение; S – любое допустимое строковое значение. Аргументы каждой функции являются обязательными, если не указано иначе.
|
|
|
|
|
|
Функция(аргумент) |
|
Действие |
|
|
|
|
|
|
|
|
|
Возвращает положение S2 в S1. N1 – начальное положение для поис- |
|
|
InStr(N1,S1,S2,N2) |
|
ка. N2 определяет, следует ли выполнять поиск с учетом регистра. |
|
|
|
|
N1, N2 – необязательные аргументы |
|
|
|
|
|
|
|
|
|
Возвращает строку (тип String), содержащую копию S со всеми сим- |
|
|
Lcase(S) |
|
волами верхнего регистра, преобразованными в символы нижнего |
|
|
|
|
регистра |
|
|
|
|
|
|
|
Left(S,N) |
|
Возвращает строку: копирует N символов из S, начиная с левого |
|
|
|
крайнего символа S |
|
|
|
|
|
|
|
|
|
|
|
|
|
Len(S) |
|
Возвращает число символов в S, включая начальные и конечные про- |
|
|
|
белы |
|
|
|
|
|
|
|
|
|
|
|
|
|
Ltrim(S) |
|
Возвращает копию строки S после удаления символов пробела из ле- |
|
|
|
вой части строки (начальные пробелы) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Возвращает строку: копирует N2 символов из S, начиная с позиции |
|
|
Mid(S,N1,N2) |
|
символа в S, заданной аргументом N1. N2 – необязательный аргу- |
|
|
|
мент, если он опущен, то возвращаются все символы в строке S от |
|
|
|
|
|
|
|
|
|
|
позиции N1 до конца строки |
|
|
|
|
|
|
|
Right(S,N) |
|
Возвращает значение типа String: копирует N символов из S, начиная |
|
|
|
с правого крайнего символа S |
|
|
|
|
|
|
|
|
|
|
|
|
|
Rtrim(S) |
|
Возвращает копию строки S после удаления символов пробела из |
|
|
|
правой части строки (конечные пробелы) |
|
|
|
|
|
|
|
|
|
|
|
|
|
Space(N) |
|
Возвращает строку пробелов длиной N символов |
|
|
|
|
|
|
|
|
|
Сравнивает S1 с S2 и возвращает число, обозначающее результат |
|
|
StrComp(S1,S2,N) |
|
сравнения: -1, если S1<S2; 0 - S1=S2; 1 - S1>S2. N является необяза- |
|
|
|
тельным аргументом и указывает следует ли выполнять сравнение с |
|
|
|
|
|
|
|
|
|
|
учетом регистра |
|
|
|
|
|
|
|
|
|
Возвращает строку, преобразованную в новую форму в зависимости |
|
|
|
|
от числового кода, заданного аргументом N. VBA предоставляет внут- |
|
|
|
|
ренние константы для использования с функцией StrConv. Наиболее |
|
|
StrConv(S,N) |
|
полезными являются: vbProperCase (преобразует строку так, что каж- |
|
|
|
|
дая буква, начинающая слово, становится заглавной), vbLowerCase |
|
|
|
|
(преобразует строку в буквы нижнего регистра) и vbUpperCase (пре- |
|
|
|
|
образует строку в буквы верхнего регистра) |
|
|
|
|
|
|
|
String(N,S) |
|
Возвращает строку длиной N символов, состоящую из символа, за- |
|
|
|
данного первым символом в S |
|
|
|
|
|
|
|
|
|
|
|
|
|
Trim(S) |
|
Возвращает копию строки S после удаления начальных и конечных |
|
|
|
символов пробела из этой строки |
|
|
|
|
|
|
|
|
|
|
|
|
|
Ucase(S) |
|
Возвращает S со всеми символами нижнего регистра, преобразован- |
|
|
|
ными в символы верхнего регистра |
|
|
|
|
|
|
|
|
|
|
|
|