Vba scrollbar как использовать

VBA-Урок 12.3. Элементы управления (Controls)

Элементы управления также могут использоваться вне форм. В следующем примере мы используем элементы управления прямо на рабочем листе.

Заметьте, что «Режим дизайнера» («Design mode») должен быть активирован, для того чтобы изменять элемент управления, который расположен на рабочем листе (и так же должен быть деактивирован, для того чтобы использовать этот элемент управления).

Перед рассмотрением этого примера, давайте посмотрим на это:

Сейчас, мы хотим добавить цвет фона ячеек и выбрать её основываясь на позиции ползунка в определенной площади 30 строк на 10 колонок.

Свойства вертикального ползунка для прокрутки экрана.

  • Min 1
  • Max 30 (30 строк)
  • Value : позиция ползунка (в данном случае, между 1 и 30)

Горизонтальный ползунок такой же, за исключением Max : 10.

Далее идет код, который будет запускаться каждый раз, когда идет изменение значения ( Value ) вертикального ползунка:

Этот код запускается когда события Change и Scroll возникают и запустят инструкции в не зависимости от того, по какой части ползунка мы щелкнули.

Далее код для вертикального ползунка:

А тут код для горизонтального ползунка:

Вы можете скачать Excel файл с примером: scrollbar.xls

Выпадающий список и Окно со списком (ComboBox and ListBox)

Это начальная точка нашего следующего примера:

Вы можете скачать Excel файл с примером: userform4.xls

Когда форма запускается, мы хотим, чтобы 4 страны были загружены в выпадающий список (используя AddItem метод):

Когда значение выпадающего списка меняется, мы хотим добавить города выбранной страны, используя цикл, подобен предыдущему.

Для того, чтобы сделать это, нам нужно номер колонки и номер строки.

Свойство ListIndex содержит порядковый номер выбранного элемента в выпадающем списке (в отличие от Value, которое содержит значение элемента списка). Заметьте, что ListIndex начинается с номера 0.

Номер колонки получается из:

Чтобы получить количество строк в выбранной колонке определенной страны, мы можем найти номер последней непустой ячейки:

Используя эту информацию, теперь возможно создать цикл, чтобы добавить города в список:

Примечание: Мы могли бы сократить код, но это бы сделало его менее читабельным:

VBA Excel. Элемент управления ScrollBar (полоса прокрутки)

Элемент управления ScrollBar

Элемент управления ScrollBar предназначен в VBA Excel для ввода пользователем числовых данных, которые ограничены минимальным и максимальным значениями. Увеличение или уменьшение значения полосы прокрутки осуществляется с указанным шагом при помощи ползунка или кнопок.

Визуально, элемент управления ScrollBar состоит из полосы прокрутки и двух кнопок, работающих аналогично кнопкам элемента управления SpinButton. Ориентация может быть горизонтальной или вертикальной в зависимости от настроек.

Полоса прокрутки в VBA Excel используется в паре с элементом управления TextBox или Label. Вспомогательный элемент необходим, чтобы отобразить текущее значение ScrollBar на пользовательской форме.

Свойства элемента ScrollBar

Свойство Описание
BackColor Цветовое оформление элемента управления.
Delay* Время между последовательными событиями при удержании кнопки.
ControlTipText Текст всплывающей подсказки при наведении курсора на полосу прокрутки.
Enabled Возможность взаимодействия пользователя с элементом управления. True – взаимодействие включено, False – отключено (цвет стрелок становится серым).
Height Высота элемента управления.
Left Расстояние от левого края внутренней границы пользовательской формы до левого края элемента управления.
Max Максимальное значение свойства Value.
Min Минимальное значение свойства Value.
Orientation** Задает горизонтальную или вертикальную ориентацию элемента управления ScrollBar.
SmallChange Шаг изменения значения свойства Value.
TabIndex Определяет позицию элемента управления в очереди на получение фокуса при табуляции, вызываемой нажатием клавиш «Tab», «Enter». Отсчет начинается с 0.
Top Расстояние от верхнего края внутренней границы пользовательской формы до верхнего края элемента управления.
Visible Видимость элемента ScrollBar. True – элемент отображается на пользовательской форме, False – скрыт.
Width Ширина элемента управления.

* По умолчанию свойство Delay равно 50 миллисекундам. Это означает, что первое событие (SpinUp, SpinDown, Change) происходит через 250 миллисекунд после нажатия кнопки, а каждое последующее событие – через каждые 50 миллисекунд (и так до отпускания кнопки).

** По умолчанию включена автоматическая ориентация, которая зависит от соотношения между шириной и высотой элемента управления. Если ширина больше высоты – ориентация горизонтальная, если высота больше ширины – ориентация вертикальная.

В таблице перечислены только основные, часто используемые свойства полосы прокрутки. Все доступные свойства отображены в окне Properties элемента управления ScrollBar.

Как средствами VBA использовать полосу прокрутки

Продолжим рассмотрите элементов управления, и следующий элемент, который мы разберем, — «Полоса прокрутки». Сразу перейдем к разработке интерфейса очередного примера. Откроем новую книгу и на листе расположим две полосы прокрутки и два текстовых окна (рис. 1.40). Левая полоса прокрутки вместе с левым текстовым окном предназначена для отображения показателей работы одного из менеджеров (для определенности — Петрова), а аналогичные правые элементы — для отображения показателей работы другого (Сидорова). Передвижением ползунка левой либо правой полосы прокрутки руководитель может установить показатель работы менеджера. Это будет числовое значение от 0 до 100. Одновременно с этим текстовое окно по вертикали займет соответствующее положение.

Рис. 1.40. Пример использования полосы прокрутки

Рис. 1.40. Пример использования полосы прокрутки

Для левого текстового окна выберем Petrov в качестве значения свойства Name, а у левой полосы прокрутки для аналогичного свойства установим значение Scroll Petrov. Соответственно, у правого текстового окна свойство Name Sidorov, а у правой полосы прокрутки Name — ScrollSidorov.

У полосы прокрутки часто используются следующие свойства:

  • Value — значение, соответствующее положению движка (ползунка) на полосе прокрутки;
  • Мах — значение, соответствующее нижнему (или право му при горизонтальной полосе прокрутки) положению движка;
  • Min — значение, соответствующее верхнему (или левому при горизонтальной полосе прокрутки) положению движка;
  • SmallChange — значение, соответствующее изменению значения Value при щелчках на стрелке полосы прокрутки;
  • LargeChange — значение, соответствующее изменению значения Value при щелчках на полосе прокрутки.

У текстового окна (как у любого другого элемента) есть свойство Тор, которое определяет положение элемента по вертикали, начиная от верхнего края листа. А при изменении положения движка левой полосы прокрутки автоматически выполняется процедура ScrollPetrov_Change() , для правой полосы, соответственно, ScrollSidorov_Change() .

Теперь более точно сформулируем задачу для программной разработки. Будем считать, что у нас в подчинении работают два менеджера и необходимо ежедневно сопоставлять результаты их работы. Скажем, количественная оценка каждого сотрудника изменяется в интервале от 0 до 100 баллов. Технически для отражения результата работы менеджера руководителю необходимо передвинуть движок соответствующей линейки прокрутки. В этом случае текстовое окно должно синхронно перемещаться на листе по вертикали, а в самом окне отображаться количество баллов. При этом, когда движок в верхнем положении, текстовое окно должно располагаться на уровне верхней границы полосы прокрутки. Соответственно, при нижнем положении движка текстовое окно должно располагаться на уровне нижней границы полосы прокрутки. Для реализации этого в окне свойств для полос прокрутки установим значения Min, равные 0, а значения Мах и Height равными 100. Установим также для этих элементов: SmallChange = 1 и LargeChange = 5 . Теперь можно написать процедуры, которые выполняются при передвижении движков левой (листинг 1.23) и правой (листинг 1.24) полос прокрутки.

‘ Листинг 1.23. Процедура, выполняемая при перемещении движка левой линейки Private Sub ScrollPetrov_Change() Petrov.Top = ScrollPetrov.Value + ScrollPetrov.Top Petrov.Text = "Петров " + CStr(ScrollPetrov.Value) Inten = 155 + ScrollPetrov.Value — ScrollPetrov.Min Petrov.ForeColor = RGB(Inten, Inten, Inten) Petrov.BackColor = RGB(0, Inten, 0) End Sub

‘ Листинг 1.24. Процедура, выполняемая при перемещении движка правой линейки Private Sub ScrollSidorov_Change() Sidorov.Top = ScrollSidorov.Value + ScrollSidorov.Top Sidorov.Text = "Сидоров " + CStr(ScrollSidorov.Value) Inten = 155 + ScrollSidorov.Value — ScrollSidorov.Min Sidorov.ForeColor = RGB(Inten, Inten, Inten) Sidorov.BackColor = RGB(inten, 0, 0) End Sub

Перед тем как прокомментировать работу программы, полезно еще раз посмотреть на результат ее работы (см. рис. 1.40). Кроме синхронного с движками полос прокрутки перемещения текстового окна по вертикали, изменяется сообщение в этом окне и меняются цвета фона и основного текста. Так, при верхнем положении движка цвет букв и фона более бледный, а при перемещении движка вниз цвета становятся более яркими. Поясним теперь некоторые конструкции этих процедур. Пояснения сделаем по тексту, представленному в листинге 1.23. В строке Petrov.Тор = ScrollPetrov.Value + ScrollPetrov.Top производится изменение положения текстового окна в соответствии с положением движка. Фактически это приводит к перемещению текстового окна по вертикали. В следующей строке используется функция CStr для преобразования данных из числового типа в строковый. В результате в текстовое окно выводится сообщение о текущем положении движка на полосе прокрутки.

После этого в следующих трех строках производится изменение фонового и основного цветов текстового окна. Как уже ранее отмечалось, интенсивность цвета меняется от 0 до 255. В результате выполнения этих строк максимальная интенсивность зеленого цвета для фона обеспечивается при нижнем крайнем положении движка. Для основного цвета интенсивность также будет максимальной. При другом крайнем положении движка интенсивности устанавливаются равными 155. Зеленый фон в этом случае станет более бледным, а цвет букв серым.

Vba scrollbar как использовать

Элемент управления ScrollBar

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

рис . 1.1 Элемент управления ScrollBars на панели ToolBox

рис. 1.2 Элемент управления ScrollBars на форме

рис. 1.3 Пример элемента управления ScrollBars на форме

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

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

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

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

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

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

Private Sub ScrollBar1_Change()

summ = 1 ‘ вычисляем сумму чисел

For i = 1 To ScrollBar1.Value

Label2.Caption = “Сумма чисел от 1 до ” & ScrollBar1.Value & ” ровна: ” & summ

Private Sub UserForm_Initialize()

summ = 1 ‘ вычесляем сумму чисел

For i = 1 To ScrollBar1.Value

Next ‘ параметры первого текстового поля

‘ параметры полосы прокрутки

‘ параметры второго текстового поля

Label2.Caption = “Сумма чисел от 1 до ” & ScrollBar1.Value & ” ровна: ” & summ

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

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *