В данной статье мы подведем небольшой итог по элементам управления языка VBA, а именно, рассмотрим компонент VBA Frame, который позволяет добавлять на поверхность формы рамку. Сам объект довольно простой, хотя у него и есть масса свойств и событий, в большинстве случаев они обрабатываться не будут.
Добавление объектов класса Frame полезно в том случае, если нужно создать группу заданных объектов (например, флажков или переключателей) или просто, сделать визуальное оформление. Помним, что для запуска редактора VBA служит комбинация клавиш Alt + F11, все элементы управления находятся в окне ToolBox, оно автоматически доступно при роботе с объектом UserForm. Если окно ToolBox отсутствует, то его можно вызвать из меню View.
Единственные свойство класса Frame, которое мы будем использовать:
BorderStyle – отвечает за отображение рамки, 0 – рамка не будет отображаться (будет видна простая вмятина), 1 – будет отображаться рамка цвета, заданного в свойстве BorderColor.
Caption – задает надпись, которая отображается вверху по контуру рамки, свойство носит чисто информативный характер.
Хорошо, давайте приступим к настройке самой формы с компонентами. На поверхности UserForm мы разместим два блока, один – набор переключателей OptionButton, а второй – набор флажков CheckBox. Рядом будет находиться текстовое поле TextBox и список ListBox и одна кнопка. Когда мы будет выбирать значения в блоке с переключателями, в текстовом поле будет отображаться информация о выбранном элементе. При нажатии на кнопку, будет происходить добавление в список тех значений, которые отмечены галочками во втором блоке.
В редакторе кода для формы нужно разместить следующий код:
Private Sub OptionButton1_Change() Dim Data As String Data = "Злобная поисковая система, которая любить портить настроение молодым блогерам. " & _ "Знаменита своим фильтром АГС. В критические дни ведет себя как девушка." TextBox1.Text = Data End Sub Private Sub OptionButton2_Change() Dim Data As String Data = "Данную поисковую систему обожают любители халявы и молодые блогеры. " & _ "Гугл всегда рад проиндексировать любой ГС и дать мнимую надежу заработать в интернете." TextBox1.Text = Data End Sub Private Sub OptionButton3_Change() Dim Data As String Data = "В свое время Рамблер учитывался как поисковая система. " & _ "Теперь это никому не нужный ресурс." TextBox1.Text = Data End Sub Private Sub UserForm_Initialize() TextBox1.MultiLine = True Frame3.BorderStyle = fmBorderStyleSingle End Sub Private Sub CommandButton1_Click() Dim ctrl As Control For Each ctrl In Frame2.Controls If ctrl.Value = True Then ListBox1.AddItem ctrl.Caption End If Next End Sub |
Давайте проанализируем все по порядку.

Процедуры от OptionButton1_Change до OptionButton4_Change отвечают за обработку события Change для каждого объекта OptionButton, расположенного на поверхности Frame. Переменная Data содержит данные типа String, в ней хранится информация, которую нужно вывести в текстовом поле.
CommandButton1_Click – тут происходит обработка клика по кнопке, в цикле происходит перебор коллекции всех элементов, что лежат на второй рамке класса Frame vba языка. Если значение Value какого из элементов ровно true (поставлена галочка), то содержимое Caption для выбранного объекта будет добавляться в список ListBox.
UserForm_Initialize – тут происходит настройки базовых свойств: определяем для текстового поля то, что оно будет многострочным (свойству MultiLine присваиваем значение true). Для объекта Frame3 класса vba Frame мы определяем, что бы отображалась рамка (свойству BorderStyle присваиваем значение fmBorderStyleSingle).
И так, в этой статье мы рассмотрели элемент управления Frame VBA языка, который позволяет добавлять рамку на поверхность формы.