Excel полоса прокрутки макрос

Обновлено: 13.05.2024

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

Полоса прокрутки. Используется для просмотра диапазона значений с помощью кнопок со стрелками для прокрутки или путем перетаскивания ползунка полосы прокрутки. Можно перемещаться по странице значений (с заранее заданным интервалом), щелкая область между ползунком и одной из стрелок для прокрутки. Как правило, пользователь также может вводить текст непосредственно в связанную ячейку или текстовое поле. Полосу прокрутки удобно использовать для ввода или изменения большого диапазона значений, а также в тех случаях, когда точность не важна. Например, полосу прокрутки можно использовать для ввода диапазона оценочных значений процентов или для постепенного изменения выбора цвета.

Полоса прокрутки (элемент управления формы)

Полоса прокрутки (элемент ActiveX)

Счетчик. Позволяет легко увеличивать и уменьшать значение, например порядковый номер, время или дату. Чтобы увеличить значение, щелкните стрелку вверх; чтобы уменьшить — стрелку вниз. Пользователь также может ввести текст непосредственно в соответствующую ячейку или текстовое поле. Счетчики используются, например, для упрощения ввода месяца, дня, года, а также для изменения уровня громкости.

Счетчик (элемент управления формы)

Счетчик (элемент ActiveX)

Примечание: Перед добавлением элементов управления в лист нужно включить вкладку Разработчика. Дополнительные сведения см. в статье Отображение вкладки "Разработчик".

Добавление полосы прокрутки (элемент управления формы)

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

Группа "Элементы управления"

Щелкните на листе место, где должен быть расположен левый верхний угол полосы прокрутки.

Примечание: Добавится вертикальная полоса прокрутки.

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

На вкладке Разработчик в группе Элементы управления нажмите кнопку Свойства .

Совет: Можно также щелкнуть элемент управления правой кнопкой мыши и выбрать пункт Формат элемента управления.

Примечание: Перед тем как нажать кнопку Свойства, выделите объект, свойства которого требуется просмотреть или изменить.

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

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

оно должно быть больше значения, указанного в поле Минимальное значение; в противном случае будет использоваться Минимальное значение;

оно должно быть меньше значения, указанного в поле Максимальное значение; в противном случае будет использоваться Максимальное значение.

В поле Минимальное значение введите наименьшее значение, которое пользователь может указать, переместив ползунок до предела вверх для вертикальной полосы прокрутки и до предела влево — для горизонтальной.

В поле Максимальное значение введите наибольшее значение, которое пользователь может указать, переместив ползунок до предела вниз для вертикальной полосы прокрутки и до предела вправо — для горизонтальной.

В поле Шаг изменения введите величину уменьшения или увеличения значения и степень перемещения ползунка при щелчке стрелки на одном из концов полосы прокрутки.

В поле Шаг изменения по страницам введите величину уменьшения или увеличения значения и степень перемещения ползунка при щелчке области между ползунком и одной из стрелок для прокрутки. Например, если для полосы прокрутки задано минимальное значение 0, а максимальное — 10, то при значении свойства Шаг изменения по страницам, равном 2, значение будет увеличиваться или уменьшаться на 2 (в данном случае на 20 % от диапазона значений полосы прокрутки) каждый раз при щелчке области между ползунком и одной из стрелок для прокрутки.

В поле Связь с ячейкой введите ссылку на ячейку, в которой содержится текущее положение ползунка.

Связанная ячейка возвращает текущее значение, соответствующее положению ползунка.

Используйте это значение в формулах, чтобы реагировать на значение, соответствующее текущему положению ползунка, которое хранится в ячейке, указанной в поле Связь с ячейкой. Например, можно создать полосу прокрутки для факторов риска со свойствами, перечисленными ниже.

Элемент управления 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.

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

scrollbar vba

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. В редакторе кода для модуля пропишите код:

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

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

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

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

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

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

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

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

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

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

Спасибо за внимание. Автор блога Владимир Баталий

Элемент Полоса прокрутки позволяет изменять значения в определенном диапазоне с шагом (1, 2, 3, . ), если нажимать на кнопки со стрелочками, и с увеличенным шагом, если нажимать на саму полосу в стороне от бегунка. Этот элемент имеет много общего со Счетчиком .

Для вставки элементов управления на лист необходимо отобразить вкладку Разработчик.

Теперь вставить элемент управления можно через меню: Разработчик/ Элементы управления/ Вставить .


Обратите внимание, что в этом меню можно также вставить Элементы ActiveX, которые расположены ниже интересующих нас Элементов управления формы. У обоих типов есть одни и те же элементы Кнопка, Список, Флажок и т.п. Разница между ними следующая: чтобы использовать Элементы ActiveX необходимо использовать VBA, а Элементы управления формы можно напрямую привязать к ячейке на листе.

Полоса прокрутки ( Scroll Bar ) как, впрочем и все другие Элементы управления формы, возвращает только 1 числовое значение. См. файл примера .

Обзорную статью обо всех элементах управления формы можно прочитать здесь .

Вставка Полосы прокрутки

Через меню Разработчик/ Элементы управления/ Вставить выберем левой клавишей мыши элемент Полоса прокрутки .


После этого выпадающее меню закроется, а курсор вместо обычного толстого крестика


превратится в тонкий крестик.


Кликнув левой клавишей мыши в нужное место на листе, элемент Полоса прокрутки будет помещен на лист (вертикально).


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


Выделение Полосы прокрутки

После вставки Полосы прокрутки она становится выделенной. Если кликнуть в любом другом месте листа, то Полоса прокрутки перестанет быть выделенной. Чтобы снова ее выделить нужно кликнуть ее ПРАВОЙ клавишей мыши (клик ЛЕВОЙ клавиши увеличивает или уменьшает значение в связанной ячейке (см. ниже)). После клика правой кнопкой также появляется контекстное меню, чтобы его убрать можно нажать ESC или кликнуть левой клавишей по Полосе прокрутки .

Перемещение Полосы прокрутки и изменение ее размеров

Если навести курсор на выделенную Полосу прокрутки (курсор примет форму 4-х направленных в разные стороны стрелок), затем нажать и удерживать левую кнопку мыши, то можно переместить Полосу прокрутки . Удерживая клавишу ALT можно выровнять Полосу прокрутки по границам ячеек. Выделенную Полосу прокрутки также можно перемещать стрелками с клавиатуры.

Если навести курсор на углы прямоугольника или на маленькие квадратики на границе, то можно изменить ее размер.

Связываем Полосу прокрутки с ячейкой

Как было сказано выше, все Элементы управления формы возвращают значение. Это значение помещается в ячейку определенную пользователем. Чтобы связать Элемент управления с ячейкой, кликните на него ПРАВОЙ клавишей мыши, в появившемся контекстном меню выберите Формат объекта. Появится диалоговое окно, выберите вкладку Элемент управления (если такая вкладка отсутствует, то Вы вставили Элемент ActiveX, а не Элемент управления формы, об этом см. выше).

В поле Связь с ячейкой нужно ввести ссылку на ячейку. Свяжем наш Полосу прокрутки с ячейкой А1 .

Также установим минимальное значение =1, максимальное =101, шаг изменения =2, шаг изменения по страницам =10.


Убедитесь, что Полоса прокрутки не выделена. Пощелкайте левой клавишей мыши по кнопкам Полосы прокрутки . В ячейке А1 значение будет увеличиваться/ уменьшаться в указанном диапазоне, причем с шагом 2 (1, 3, 5, . ), т.е. в ячейку будут вводиться только нечетные числа. При щелчке по полосе прокрутки, значения будут уменьшаться/ увеличиваться с шагом 10.

Существует и другой способ связать Элемент управления и ячейку: Выделите правой клавишей мыши Элемент управления, в Строке формул введите =, затем кликните левой клавишей мыши на нужную ячейку, нажмите клавишу ENTER . Чтобы изменить ячейку, с которой связан Элемент управления, достаточно перетащить эту ячейку, взяв за ее границу, в нужное место.

Одну ячейку можно связать с несколькими элементами управления, но имеет ли это смысл? Решать Вам.

Примечание . Можно принудительно ввести в ячейку текстовое значение, но оно будет заменено при следующем нажатии Полосы прокрутки . Проведем эксперимент. Пусть в ячейке А1 введено число 5. Даже если Вы введете в ячейку А1 текст " строка ", то при следующем нажатии Полосы прокрутки , в ячейке появится число 7 (если шаг =2), т.е. Полоса прокрутки хранит текущее значение не в ячейке, а где-то в себе.

Если, в нашем примере, Вы введете четное значение, то Полоса прокрутки не сбросит его, а будет прибавлять 2 и Вы получите четную последовательность 2, 4, 6, . Но, при достижении верхней границы его поведение изменится 96, 98, 100, 101, т.к. максимальное значение установлено нами =101. Теперь при движении вниз Полоса прокрутки будет воспроизводить последовательность нечетных чисел! Тоже справедливо и для нижней границы: 6, 4, 2, 1, т.к. минимальное значение установлено =1. Поэтому, следите, чтобы граничные значения (при шаге отличным от 1), содержались в требуемой последовательности, иначе при движении вверх и вниз Вы можете получить разные последовательности. Например, для последовательности 1, 4, 7, 10 (шаг 3) правильно установить границы 1 и 10. Если Вы установите границы 1 и 9, то при движении от 1 Вы получите последовательность 1, 4, 7, 9, затем при движении от 9 - получите 9, 6, 3, 1, т.е. 2 разные последовательности!

Использование Полосы прокрутки

Полоса прокрутки удобна, когда у Вас есть модель, которая зависит от определенного параметра и Вам требуется посмотреть, как ведут себя показатели модели в зависимости от этого параметра: согласитесь нажимать на кнопку удобней, чем вводить значения непосредственно в ячейку. Можно также нажать на Полосу прокрутки и удерживать левую клавишу мыши, и значения в связанной ячейке начнут "бежать".

Предположим, что имеется таблица с множеством столбцов и нам нужно средство для просмотра только одного столбца.



При нажатии на Полосу прокрутки (кнопки), значение в связанной ячейке А1 будет увеличиваться/ уменьшаться на 1 (шаг), следовательно, будет отображен следующий/ предыдущий месяц. При нажатии на Полосу прокрутки (полоса), значение в связанной ячейке А1 будет увеличиваться/ уменьшаться на 3 (шаг страницы), следовательно, будет отображен месяц, отстоящий на 3 месяца вперед или назад. Это реализовано с помощью формулы =СМЕЩ($B19;;$A$1-1) в ячейке В8 и ниже.

Также для выделения текущего месяца в исходной таблице использовано Условное форматирование .


Нажмем на кнопку Полосы прокрутки , чтобы отобразить (в диапазоне В8:В14 ) следующий месяц.


Этот месяц будет выделен в исходной таблице.

Примечание . Таблица, конечно же, спроектирована не совсем корректно: логично разместить материалы в столбцах, а месяцы в строках. О правильном проектировании таблиц читайте здесь .

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

У каждого Элемента управления есть имя. Чтобы его узнать нужно выделить Полосу прокрутки , в Поле имя будет отображено ее имя. Чтобы изменить имя Полосы прокрутки - в Поле имя введите новое имя и нажмите клавишу ENTER . Также имя можно изменить в Области выделения ( Главная / Редактирование/ Найти и выделить/ Область выделения ).

Зачем нам знать имя элемента управления? Если Вы не планируете управлять Полосой прокрутки из программы VBA, то имя может потребоваться только для настройки его отображения на листе. Об этом читайте ниже.

Прячем Полосу прокрутки на листе

Включите Область выделения ( Главная / Редактирование/ Найти и выделить )


В Области выделения можно управлять отображением не только Элементов управления, но и других объектов на листе, например рисунков.

Нажмите на изображение глаза напротив имени объекта и объект исчезнет/ появится.


Расширяем возможности Полосы прокрутки

Диапазон изменения значений Полосы прокрутки может содержать только положительные значения, шаг - только целые и положительные значения. Этого не всегда достаточно. Научимся использовать формулы, чтобы расширить возможности Полосы прокрутки (см. файл примера ).

Чтобы иметь возможность изменять значение в ячейке с шагом 0,1 используйте формулу =A31/10 ( Полоса прокрутки связана с ячейкой А31 ).

Чтобы изменять значение в ячейке от -24 до -1, используйте формулу =-25+A35 (границы Полосы прокрутки установлены от 1 до 24, Полоса прокрутки связана с ячейкой А35 )

Шаг изменения Полосы прокрутки можно сделать переменным, например, используя квадратичную зависимость (1, 4, 9, 16, . ) с помощью формулы =A38*A38 ( Полоса прокрутки связана с ячейкой А38 ).

Читайте также: