![](/user_photo/2706_HbeT2.jpg)
- •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. Исправление ошибок
- •Библиографический список
- •Оглавление
![](/html/2706/40/html_bEywtG9Bds._fc8/htmlconvd-AiAWPu64x1.jpg)
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
![](/html/2706/40/html_bEywtG9Bds._fc8/htmlconvd-AiAWPu65x1.jpg)
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 получены любым из приведённых выше способов.
![](/html/2706/40/html_bEywtG9Bds._fc8/htmlconvd-AiAWPu66x1.jpg)
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.
![](/html/2706/40/html_bEywtG9Bds._fc8/htmlconvd-AiAWPu67x1.jpg)
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