Класс ScrollBar — работа с полосами прокрутки VBA

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

Элемент управления ScrollBar представляет из себя всем знакомую полосу прокрутки, которая встречается в текстовых полях, когда их содержимое не умещается на поверхности. Только в данном случае, его логика работы немного меняется.

VBA Объект ScrollBar удобно использовать, когда нужно увеличить или уменьшить диапазон. Так, можно с его помощью задавать диапазон для вычисления суммы чисел, или, в зависимости от положения ползунка менять цвет текста. Понятно, что в этом случае удобно использовать цикл for. Примером использования объекта ScrollBar VBA может служить регулятор громкости, контраста и так далее.

Базовые свойства класса ScrollBar VBA

Max  и  Min – данные свойства позволяют задать максимальное и минимальное значение, которые вы сможете определить используя данные элемент управления. Свойство принимает только целые значения в диапазоне от −32 767  до +32 767. Вы можете задавать значения как в прямом порядке (от меньшего к большего) так и в обратном (от большего к меньшему). В таких случаях ползунок нужно будет тянуть в том или ином направлении.

SmallChange – свойство vba принимает целое значение, которое определяет, на какую величину будет перемещаться ползунок при нажатии на кнопки прокрутки.

LargeChange – как и свойство SmallChange позволяет задать шаг перемещения ползунка при нажатии на полосу прокрутки. Значения могут быть в диапазоне от −32 767  до +32 767, по умолчанию значения равны для обоих свойств 1.

Orientation – свойство позволяет указать ориентацию ползунка – горизонтальную или вертикальную. По умолчанию значение ровно 1 – ориентация определяется автоматически исходя из параметров формы, то есть, как полоса прокрутки умещается на объекте UserForm. Можно и явно указать ориентацию объекта ScrollBar, -1 – горизонтальная ориентация и 0 – вертикальная.

Visible – собственно, определяет видимость vba компонента ScrollBar, значение true установлено по умолчанию – объект видим, и false – скрываем элемент управления от глаз пользователя.

Value – позволяет получить значение ползунка, в зависимости от его положения.

Как и большинства элементов управления, основным событием для ScrollBar VBA является событие Change, которое возникает при перемещении ползунка.

Теперь настало время приступить к практике

Откройте редактор Visual Basic (Alt + F11), и в окно редактора Проектов добавьте новую форму и модуль, я назвал форму ScrollForm и модуль ScrollModule, за имя отвечает свойство Name. В редакторе кода для модуля пропишите код:

Sub ScrollModule()
    ScrollForm.Show
End Sub

Тут мы определяем, что при запуске модуля (макроса) с именем ScrollModule надо показать форму с именем ScrollForm, свойство Show делает объекта класса UserForm видимым.

Теперь на поверхности формы нам нужно расположить следующие элементы управления:

Label1 – метка, в которой пропишем текст “Полоса прокрутки”

ScrollBar1 – полоса прокрутки, которая размещается под меткой, она должна быть горизонтальной. С ее помощью мы будет задавать диапазон значений от 1 до 100, и потом будем вычислять сумму заданных чисел.

Label2 – вторая метка, удалите в ней весь текст, в ней мы будет отображать результат суммирования.

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

Теперь в редакторе кода для формы пропишем следующие процедуры:

Private Sub ScrollBar1_Change()
Dim summ
    summ = 1
    ' вычисляем сумму чисел
    For i = 1 To ScrollBar1.Value
        summ = summ + i
    Next
    Label2.Caption = "Сумма чисел от 1 до " & ScrollBar1.Value & " ровна: " & summ
End Sub
 
Private Sub UserForm_Initialize()
Dim summ
    summ = 1
    ' вычесляем сумму чисел
    For i = 1 To ScrollBar1.Value
        summ = summ + i
    Next
    ' параметры первого текстового поля
    Label1.FontSize = 15
    Label1.ForeColor = &HCD
    Label1.TextAlign = fmTextAlignCenter
    ' параметры полосы прокрутки
    ScrollBar1.Min = 1
    ScrollBar1.Max = 100
    ' параметры второго текстового поля
    Label2.FontSize = 15
    Label2.ForeColor = &HFF0000
    Label2.TextAlign = fmTextAlignCenter
    Label2.Caption = "Сумма чисел от 1 до " & ScrollBar1.Value & " ровна: " & summ
End Sub

ScrollBar1_Change – тут происходит обработка события Change. В цикле происходит суммирование чисел от 1 до ScrollBar1.Value. Тут ScrollBar1.Value содержит выбранное значение на полосе прокрутки, результат суммирования будет хранить переменная summ. Также в свойство Caption объекта Label2 записывается результат суммирования.

UserForm_Initialize – тут происходит определение начальных свойств при инициализации формы.  Размер и текст меток, задается минимальное (один) и максимальное (сто) значение для полос прокрутки. Тут также используется цикл для суммирования значений.

И так, давайте просуммируем: мы рассмотрели пример использования объекта класса ScrollBar VBA языка, который позволяет добавлять на поверхность формы UserForm полосу прокрутки.

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

  1. Алексей

    Уважаемые… создатели сайта! Не могу не обратить Ваше внимание на одну может быть незначительную ошибку, но… Сумма НЕ может быть рОвна!!! РОвная может быть дорога или линия, а сумма должна быть рАвна, от слова рАвенство!!! P.S. Ваш сайт частично помог в решении моей задачи, за что спасибо, но ошибка ‘резанула по глазам’.

    Ответить