- •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. Исправление ошибок
- •Библиографический список
- •Оглавление
68
MsgBox “R=” & r End Sub
После закрытия формы при помощи процедуры
Private Sub Выйти_Click()
Unload Me
End Sub
кнопкой Выйти на экран будет выведено значение переменной r.
2.11.2.6. Элемент управления CheckBox (Флажок)
Элемент управления Флажок (CheckBox) дает возможностьыклзователю осуществить выбор типа Да/Нет. Можно создать группу элементов, причём выбор значений для всех флажков в этой группе не зависит друг от друга. Вид элемента приведен на рис. 25.
Рис. 25. Элемент Флажок Основные свойства элемента Флажок:
Caption: надпись, которая выводится рядом с элементом. Value: True – флажок установлен;
False – флажок не установлен.
Основное событие для этого элемента – Click. Оно возникает при изменении свойства Value с помощью мыши или программно. Ниже приведены процедуры, обрабатывающие событие Click. Если установлен флажок “Да”, то выводится сообщение “да”, а если “Нет”, то – “нет”.
Private Sub CheckBox1_Click()
If UserForm1.CheckBox1.Value = True Then MsgBox “да”
End Sub
Private Sub CheckBox2_Click()
If UserForm1.CheckBox2.Value = True Then MsgBox “нет”
End Sub
2.11.2.7. Элемент управления ToggleButton (Выключатель)
Элемент Выключатель (ToggleButton) предназначен для тех же целей, что и элемент Флажок, но имеет вид кнопки, находящейся в “нажатом” (утопленном) или “отжатом” (отпущенном) состоянии. На рис.26 выключатель “Первый” включен (значение свойства Value = True), аыклюючатель “Второй” – отключен (значение свойства Value = False). Могут быть нажатыми несколько выключателей.
69
Рис. 26. Элемент Выключатель Основные свойства элемента Выключатель:
Caption: надпись, которая выводится на элементе. Value: True – выключатель установлен;
False – выключатель не установлен.
Основное событие для этого элемента – Click. Оно возникает при изменении свойства Value с помощью мыши или программно. Ниже приведены процедуры, обрабатывающие событие Click. Если нажат выключатель “Первый”, то выводится сообщение “ Первый ”, а если “Второй”, то – “Второй”.
Private Sub ToggleButton1_Click()
If UserForm2.ToggleButton1.Value = True Then MsgBox “Первый”
End Sub
Private Sub ToggleButton2_Click()
If UserForm2.ToggleButton2.Value = True Then MsgBox “Второй”
End Sub
2.11.2.8. Элемент управления OptionButton (Переключатель)
Элементы Переключатели (OptionButton) предназначены для выбора одного из двух взаимоисключающих значений: True (“Выбран”) и False (“Не выбран”) (рис.27). Они обычно объединяются в группу. При выборе нужного элемента остальные элементы в группе автоматически устанавливаются в состояние “Не выбран”.
Рис. 27. Элемент Переключатель
Для объединения переключателей в группу можно использовать элементы-контейнеры, например, Рамка. Если группа одна, то контейнером может служить форма. Основные свойства элемента Переключатель:
Caption: надпись, которая выводится на элементе. Value: True – переключатель установлен;
False – переключатель не установлен.
Основное событие элемента Переключатель – Click. Оно возникает при изменении значения свойства Value. В группе переключателей событие возникает только для того элемента, чье значение становится True.
70
2.11.2.9. Элемент управления Image (Рисунок)
Элемент Рисунок (Image) предназначен для вывода содержимого графических файлов в форме. Элемент не позволяет редактировать рисунок. Поддерживаются следующие форматы файлов: *.bmp, *.cur, *.gif, *.ico, *.jpg, *.wmf.
2.11.2.10.Элемент управления ScrollBar (полоса прокрутки)
Полоса прокрутки (ScrollBars) используется в текстовых полях, когда введенный текст полностью на экране не умещается. ScrollBar можно использовать как отдельный элемент управления для выбора значения из диапазона. Обычно такой элемент управления используется для выбора плавно меняющихся значений.
Главное событие для этого элемента управления – Change.
Наиболее часто используемые свойства элемента ScrollBars.
Max и Min – максимальное и минимальные значения, которые можно задать при помощи этого элемента управления. Возможный диапазон – от
-32 767 до +32 767.
LargeChange и SmallChange – величина шага ползунка при перемещении его пользователем путем щелчка на полосе ниже ползунка или при нажатии на кнопку направления соответственно.
Orientation – определяет расположение ползунка (вертикальное или горизонтальное). По умолчанию для этого свойства установлено значение 1, что значит, что ориентация определяется автоматически в зависимости от конфигурации отведенного элементу управления пространства на форме (что больше – длина или высота). Однако при помощи этого свойства можно и явно указать вертикальное или горизонтальное расположение ползунка.
ProportionalThumb – определяет размер ползунка: будет ли он пропорционален размеру полосы прокрутки (по умолчанию) или фиксированного размера.
Value – главное свойство этого элемента управления. Определяет положение ползунка и то значение, которое будет возвращать этот элемент управления программе.
Применение ползунка без отображения выбранной при помощи него информации не очень удобно. В простом случае значение, выбранное при помощи ползунка, можно отобразить в текстовой надписи:
Private Sub ScrollBar1_Change()
Label1.Caption = ScrollBar1.Value End Sub
В более сложном варианте пользователь может выбирать: использовать ползунок или вводить значение в тестовом поле.
71
2.11.2.11.Элемент управления SpinButton (Счётчик)
Элемент управления SpinButton (Счётчик)– эта та же полоса прокрутки, но без самой полосы и ползунка. SpinButton используется в тех ситуациях, когда диапазон выбираемых значений небольшой. Все свойства, имеющиеся у SpinButton, совпадают со свойствами ScrollBar.
При щелчке на соответствующей стрелке изменяется значение самого элемента, но внешне это никак не выражается. Изменять значение другого элемента с помощью элемента Счетчик можно программно.
2.11.2.12.Элемент управления RefEdit (Поле со свёртыванием)
Элемент управления RefEdit (Поле со свёртыванием) аналогичен полю ввода, но позволяет вводить в него ссылку на диапазон выбором на рабочем листе. Свойство Value возвращает эту ссылку.
В качестве примера1 использования элемента управления RefEdit используем проект, определяющий некоторые статистические параметры диапазона, а именно максимальное, минимальное значения и сумму всех значений ячеек этого диапазона. Создаётся форма, на которой расположены две кнопки: CommandButton1 и CommandButton2 и элемент управления RefEdit (рис. 30). Кнопка CommandButton1 предназначена для задания значения диапазона элемента управления RefEdit, а кнопка CommandButton2 – для выгрузки формы. Форма, приведённая на рис. 31, загружается при выполнении процедуры СТАТИСТИКА2:
Sub СТАТИСТИКА2() СТАТИСТИКА.Show End Sub
находящейся в стандартном модуле Module1.
Рис. 28. Проект формы |
Рис. 29. Загруженная форма |
1 При разработке примера использованы материалы из кн.: Гарнаев А.Ю. MS Excel 2002: разработка приложений. – СПб.: БХВ-Петербург, 2003. – C. 391–392.
72
Для задания диапазона необходимо сделать активным окно элемента управления RefEdit и выделить нужный диапазон Лист1!$A$14:$A$17 (рис. 32). При выделении диапазона размер формы уменьшается, открывая ячейки для его выделения. Отсюда название элемента “Поле со свёртыванием”.
Рис. 30. Выделение диапазона
При нажатии на кнопку ok выполняется следующая процедура модуля формы.
Private Sub CommandButton1_Click() Dim r As String
Dim min As Double, max As Double, s As Double r = RefEdit1.Value
Dim rgn As Range Set rgn = Range
min = WorksheetFunction.min(rgn) max = WorksheetFunction.max(rgn) s = WorksheetFunction.Sum(rgn)
MsgBox RefEdit1.Value & vbCr & _ “min=” & min & vbCr & _ “max=” & max & vbCr & _ “s=” & s
End Sub
В этой процедуре инструкция r = RefEdit1.Value присваивает переменной r значение ссылки на диапазон, инструкция Dim rgn As Range объявляет переменную rgn как объект Range, а инструкция Set rgn = Range® присваивает значение ячеек выбранного диапазона переменной rgn.
Значения свойства Caption формы (Статистика), кнопки
CommandButton1 (ok) и кнопки CommandButton2 (Выйти) задаются при инициализации следующей процедуры модуля формы:
Private Sub UserForm_initialize()
Me.Caption = “Статистика”
CommandButton1.Caption = “ok”
CommandButton2.Caption = “Выйти”
End Sub
Удаление формы из памяти осуществляется при нажатии кнопки “Выйти”. При этом возникает событие Click, обрабатываемого следующей процедурой формы: