Excel vba прокрутка экрана
Синтаксис метода Scroll состоит из следующих частей:
Part | Описание |
---|---|
object | Обязательный. Допустимое имя объекта. |
ActionX | Необязательное. Определяет действие для горизонтального направления. |
ActionY | Необязательное. Определяет действие для вертикального направления. |
Параметры
Параметры ActionX и ActionY:
Константа | Значение | Описание |
---|---|---|
fmScrollActionNoChange | 0 | Прокрутка в указанном направлении отсутствует. |
fmScrollActionLineUp | 1 | Перемещение вверх по вертикальной полосе прокрутки или влево по горизонтальной полосе прокрутки. Перемещение эквивалентно нажатию клавиш стрелок вверх или влево для перемещения по полосе прокрутки. |
fmScrollActionLineDown | 2 | Перемещение вниз по вертикальной полосе прокрутки или вправо по горизонтальной полосе прокрутки. Перемещение эквивалентно нажатию клавиш стрелок вправо или вниз для перемещения по полосе прокрутки. |
fmScrollActionPageUp | 3 | Переместите одну страницу на вертикальную полосу прокрутки или одну страницу на горизонтальной панели прокрутки. Перемещение эквивалентно нажатию на клавиатуре клавиши PAGE UP для перемещения по полосе прокрутки. |
fmScrollActionPageDown | 4 | Переместите одну страницу вниз на вертикальную полосу прокрутки или одну страницу прямо на горизонтальной панели прокрутки. Перемещение эквивалентно нажатию на клавиатуре клавиши PAGE DOWN для перемещения по полосе прокрутки. |
fmScrollActionBegin | 5 | Перемещение в верхний конец вертикальной полосы прокрутки или в левый конец горизонтальной полосы прокрутки. |
fmScrollActionEnd | 6 | Перемещение в нижний конец вертикальной полосы прокрутки или в правый конец горизонтальной полосы прокрутки. |
Примечания
Метод Scroll применяет столбцы прокрутки, которые отображаются на форме, кадре или странице, которая больше области отображения. Этот метод не применяется к отдельной панели прокрутки или для прокрутки баров, которые отображаются в TextBox.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Элемент управления 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.
Продолжим рассмотрите элементов управления, и следующий элемент, который мы разберем, — «Полоса прокрутки». Сразу перейдем к разработке интерфейса очередного примера. Откроем новую книгу и на листе расположим две полосы прокрутки и два текстовых окна (рис. 1.40). Левая полоса прокрутки вместе с левым текстовым окном предназначена для отображения показателей работы одного из менеджеров (для определенности — Петрова), а аналогичные правые элементы — для отображения показателей работы другого (Сидорова). Передвижением ползунка левой либо правой полосы прокрутки руководитель может установить показатель работы менеджера. Это будет числовое значение от 0 до 100. Одновременно с этим текстовое окно по вертикали займет соответствующее положение.
Рис. 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
После этого в следующих трех строках производится изменение фонового и основного цветов текстового окна. Как уже ранее отмечалось, интенсивность цвета меняется от 0 до 255. В результате выполнения этих строк максимальная интенсивность зеленого цвета для фона обеспечивается при нижнем крайнем положении движка. Для основного цвета интенсивность также будет максимальной. При другом крайнем положении движка интенсивности устанавливаются равными 155. Зеленый фон в этом случае станет более бледным, а цвет букв серым.
Элемент Полоса прокрутки позволяет изменять значения в определенном диапазоне с шагом (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 ).
Читайте также: