Класс Frame — работа с рамками VBA

Класс Frame — работа с рамками VBA Макросы на VBA

В данной статье мы подведем небольшой итог по элементам управления языка 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

Давайте проанализируем все по порядку.

Форма UserForm с компонентом VBA Frame

Процедуры от 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 языка, который позволяет добавлять рамку на поверхность формы.

Оцените статью
Технологии программирования и ведение блога
Добавить комментарий