- •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. Исправление ошибок
- •Библиографический список
- •Оглавление
25
Указание иерархии объектов VBA аналогично указанию иерархии папок в файловой системе Windows при назначении пути для доступа к файлу.
2.8.3.Работа с объектами
Работа с любым объектом заключается в следующем:
задание свойств объекта;
получение значений свойств объекта;
выполнение методов объекта.
2.8.3.1. Задание свойств объекта
Задание значения свойству объекта имеет следующий формат:
Объект.ИмяСвойства = Значение
Объект обозначает имя объекта, а ИмяСвойства – соответственно имя свойства, которому присваивается значение. Имя объекта отделяется от имени свойства точкой. Например, чтобы определить свойство Value (Значение) объекта Range , т.е. поместить в ячейку A1 значение 10, а в ячейку B1 значение Товар, применяются следующие инструкции:
Range("A1").Value = 10
Range("B1").Value = “Товар”
Чтобы получить значение свойства объекта, используется формат:
ИмяПеременной = Объект.ИмяСвойства
Такой код применяется для присвоения переменной значения свойства объекта или свойству другого объекта. Если надо присвоить переменной значение свойства Value объекта Range, т.е. переменная принимает значение из ячейки рабочего листа, используются следующие инструкции:
Dim SngValue As Single
SngValue = Range("A1").Value
Для вывода на экран значения, содержащегося в ячейке B1, можно использовать одну из следующих инструкций:
MsgBox "Ячейка B1 содержит значение " & Range("B1").Value или
MsgBox "Ячейка B1 содержит значение " & SngValue
2.8.3.2. Использование методов объекта
Для выполнения метода объекта применяется один из следующих форматов:
ИмяОбъекта.ИмяМетода
ИмяОбъекта.ИмяМетода Аргумент1, Аргумент2, …, АргументN ИмяОбъекта.ИмяМетода (Аргумент1, Аргумент2, …, АргументN)
26
Это означает, что:
метод может не иметь Аргументов или все они не обязательные;
метод может иметь несколько Аргументов, не заключаемых в круглые скобки;
метод иметь несколько Аргументов, заключаемых в круглые скобки.
Кроме того, аргументы могут быть неименованными и именованными, обя-
зательными и необязательными. Значения неименованных аргументов должны быть перечислены в заданном порядке, определяемом форматом метода, отделяя каждый аргумент запятой и включая запятые на месте пропущенного необязательного аргумента. Именованные аргументы имеют формат
НаименованиеАргумента := ЗначениеАргумента Примеры
В этом примере удаляются формулы и форматирование ячеек A1:G37 на листе Лист1.
Worksheets("Лист1").Range("A1:G37").Clear
В следующем примере очищается область диаграммы Диаграмма1 (объект ChartArea; удаляются данные и форматирование диаграммы).
Charts("Диаграмма1").ChartArea.Clear
Например, для выполнения метода Open (Открыть) рабочей книги Примеры запишите код
Workbooks("Примеры").Open
Некоторые методы имеют аргументы, обязательные или необязательные. В следующем примере метод SaveAs (Сохранить), применяемый для сохранения текущей рабочей книги, в качестве аргумента использует имя файла, в котором будет сохранена рабочая книга.
ThisWorkbook.SaveAs Filename:= "Текущий бюджет"
Этот же способ используется в тех редких случаях, когда значения параметров передаются свойству. Порядок следования значений должен строго соответствовать порядку, в котором были объявлены сами параметры.
Второй способ передачи значений параметров при вызове метода отличается от первого лишь отсутствием круглых скобок:
ИмяОбъекта.ИмяМетода аргумент!, аргумент2, ...
Требования к порядку следования значений такие же, как и для первого способа.
27
2.8.3.3. Переменные-объекты
Переменными-объектами называются переменные, имеющие тип Object. Переменные-объекты объявляются точно так же, как переменные других типов, т.е. с помощью оператора Dim, используя при этом общий тип данных Object, или с помощью оператора Set, назначив переменнымобъектам тип конкретного объекта. Ниже приведены несколько примеров объявления переменных-объектов.
Dim Таблица1 As Object
Dim Продажи As Worksheet
Dim Книга1 As Workbook
Dim Курс As Range
Set Лист1 = Workbooks("Финансы").Worksheets("Бюджет")
Set Лист2 = Workbooks("Финансы ").Worksheets("Бюджет")
Set Книга1 = Workbooks("Финансы")
Set Таблица1 = Workbooks("Бюджет").Worksheets(1).Range("A1:A12")
После назначения переменным-объектам конкретных объектов имена переменных-объектов можно использовать в кодах процедур вместо имен самих объектов. Пример такого использования показан в листинге процедуры Объекты .
Sub Объектs()
Dim РабОбл As Range
Set РабОбл = Workbooks("Финансы ").Worksheets("Лист1").Range("A2:D2")
РабОбл.Font.Bold = True
РабОбл.Font.Italic = True
РабОбл.Font.Name = "Courier"
End Sub
В этой процедуре имя переменной РабОбл применяется вместо ссылки на диапазон A2:D2, который находится на рабочем листе Лист1 рабочей книги Финансы. Такая замена упрощает написание длинного полного имени объекта. В результате выполнения этой процедуры шрифт в ячейках рабочего листа Лист1 будет отформатирован как жирный(Bold) курсив(Italic) тип Courier. Например, слово “шрифт” будет иметь вид
“шрифт”.
2.8.3.4. Коллекции
Коллекцией называется группа подобных объектов. Рассмотрим следующее полное имя объекта:
Workbooks("Финансы ").Worksheets("Лист1").Range("A2:D2")