- •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. Исправление ошибок
- •Библиографический список
- •Оглавление
64
в результате чего ячейка A2 получает значение текста, введенного в поле элемента управления TextBox1. Выход из формы происходит при щелчке по кнопке Ok. При этом вызывается процедура формы
CommandButton1_Click и выполняется оператор Unload Me.
2.11.2.4. Элемент управления ComboBox (комбинированный список)
Этот элемент управления предоставляет пользователю возможность выбирать существующие значения из раскрывающегося списка и вводить в поле списка значение, которое отсутствует в списке.
Наиболее часто используются следующие свойства элемента
ComboBox.
RowSource – это свойство указывает диапазон рабочего листа, который содержит список значений элемента управления RowSource.
Value (или Text) – позволяет программным способом установить выбранное значение в списке или вернуть выбранное или введенное пользователем значение.
Остальные свойства: AutoSize, Enabled, Locked, ControlText,
ControlTipText, MaxLength – применяются точно так же, как и для
TextBox.
Основное событие элемента ComboBox – |
это Change, то же, что |
и для TextBox. Обычно при обработке этого |
события проверяются |
введенные пользователем значения, которые переносятся в текстовое поле.
Список значений элемента управления ComboBox может быть определён двумя способами:
должен храниться в диапазоне ячеек рабочей книги;
определяться, используя метод AddItem для добавления значения списка в элемент управления ComboBox.
Впервом способе в окне Properties устанавливается значение свойства RowSource в виде ссылки на диапазон листа рабочей книги, в
котором хранятся значения списка, например, Лист1!B1:B4 или КАРТАЛЫ, где КАРТАЛЫ – имя диапазона-строки или диапазонастолбца (рис. 21,а и рис. 21,б).
Рис. 21,а. Диапазон значений элемента управления ComboBox
65
Рис. 21,б. Ссылка на диапазон значений элемента управления ComboBox Значения диапазона ячеек рабочей книги можно менять программно.
Во втором способе значения элемента управления ComboBox создаются программно перед использованием формы и пропадают после её закрытия. Ниже приведена процедура Заполнение_ComboBox, заполняющая элемент управления ComboBox названиями кварталов с помощью метода AddItem. В этой процедуре ShouКвартал – имя формы, КВАРТАЛЫ – имя элемента управления ComboBox и значение свойства Caption формы ShouКвартал.
Public R As Variant
Sub Заполнение_ComboBox()
' Заполнение элемента управления ComboBox ShouКвартал.КВАРТАЛЫ.RowSource = “” ShouКвартал.КВАРТАЛЫ.AddItem “КВ1” ShouКвартал.КВАРТАЛЫ.AddItem “КВ2” ShouКвартал.КВАРТАЛЫ.AddItem “КВ3” ShouКвартал.КВАРТАЛЫ.AddItem “КВ4” ShouКвартал.Show
MsgBox “R=” & R End Sub
Кроме создания значений элемента управления ComboBox, в этой процедуре осуществляется вывод на экран формы ShouКвартал (используется метод Show) и значения переменной R. Переменная R получает значение в процедуре Ok_Click формы обработки события нажатия кнопки. Переменная R должна быть объявлена как Public перед самой первой стандартной процедурой. На рис.22 приведёна форма ShouКвартал, в которой значения элемента ComboBox получены любым из приведённых выше способов.
66
Рис. 22. Форма ShouКвартал
В форме ShouКвартал КВАРТАЛЫ – это заголовок формы, полученный присвоением параметру Caption значения КВАРТАЛЫ. Щелчок по кнопке Ok формы вызывает процедуру Ok_Click обработки этого события:
Private Sub Ok_Click()
Range(“A1”).Value = ShouКвартал.КВАРТАЛЫ.Value
R = ShouКвартал.КВАРТАЛЫ.Value
End Sub
В результате её выполнения ячейка A1 активного листа и переменная R получат значение выбранной позиции в списке (на рис. 22 это КВ2).
При нажатии кнопки “Выйти” выполняется процедура Выйти_Click формы модуля ShouКвартал:
Private Sub Выйти_Click()
Unload Me
End Sub
В результате выполнения процедуры Выйти_Click происходит выгрузка формы ShouКвартал из памяти.
2.11.2.5. Элемент управления ListBox (список)
Этот элемент управления предоставляет пользователю возможность выбирать только одно или несколько существующих значений из списка. Основные свойства, методы и события у ListBox те же, что и у ComboBox. Отличие состоит в том, что:
имеется свойство MultiSelect, позволяющее пользователю выбирать несколько значений (по умолчанию это свойство отключено);
пользователь не может вводить свои значения.
На рис. 23 приведена форма Месяцы, в которой выбираются значения из списка месяцы при помощи элемента управления ListBox. Значения списка месяцы хранятся в блоке ячеек месяцы листа Excel.
67
Рис. 23. Форма Месяцы
Имя списка месяцы задаётся в качестве параметра RowSource в табли-
це Properties элемента ListBox (рис. 24).
Рис. 24. Задание свойства параметра RowSource формы Месяцы
Для выбора нужного месяца нужно выделить его мышью в списке и щёлкнуть по кнопке Ok. При этом будет вызвана процедура обработки события Click кнопки Выйти_Click:
Private Sub Ok_Click() Range(“a1”).Value = Месяцы.Месяц.Value r = Range(“a1”).Value
End Sub
В результате в ячейку A1 будет помещено значение выбранного месяца и это же значение получит переменная r.
Загрузка формы осуществляется при помощи процедуры Поле_со_списком, хранящейся в стандартном модуле Module1:
Public r As Variant
Sub Поле_со_списком() Месяцы.Show