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

В редакторе кода для формы нужно разместить следующий код:

PrivateSub OptionButton1_Change()    Dim Data AsString    Data = "Злобная поисковая система, которая любить портить настроение молодым блогерам. " & _            "Знаменита своим фильтром АГС. В критические дни ведет себя как девушка."    TextBox1.Text = DataEndSub PrivateSub OptionButton2_Change()    Dim Data AsString    Data = "Данную поисковую систему обожают любители халявы и молодые блогеры. " & _            "Гугл всегда рад проиндексировать любой ГС и дать мнимую надежу заработать в интернете."    TextBox1.Text = DataEndSub PrivateSub OptionButton3_Change()    Dim Data AsString    Data = "В свое время Рамблер учитывался как поисковая система. " & _            "Теперь это никому не нужный ресурс."    TextBox1.Text = DataEndSub PrivateSub UserForm_Initialize()    TextBox1.MultiLine = True    Frame3.BorderStyle = fmBorderStyleSingleEndSub PrivateSub CommandButton1_Click()    Dim ctrl AsControl    ForEach ctrl In Frame2.Controls        If ctrl.Value = TrueThen            ListBox1.AddItem ctrl.Caption        EndIf    NextEndSub

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

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

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