Элемент управления пользовательской формы ScrollBar, применяемый в VBA Excel для создания полосы прокрутки. Свойства UserForm.ScrollBar, примеры кода.
UserForm.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.
Примеры кода с полосой прокрутки
Пример 1
Условие примера 1
- На пользовательской форме VBA Excel расположены элементы управления ScrollBar1 и Label1.
- Необходимо задать для полосы прокрутки ScrollBar1 интервал значений от -100 до 100 единиц с шагом 5 и отображением текущего значения на элементе Label1.
- При открытии формы полоса прокрутки должна быть установлена на значении 0.
Решение примера 1
Первоначальные настройки при открытии пользовательской формы:
Private Sub UserForm_Initialize() Me.Caption = «Пример 1» With ScrollBar1 .Min = —100 .Max = 100 .SmallChange = 5 .Value = 0 End With Label1.Caption = «0» End Sub |
Обработка события Change объекта ScrollBar1:
Private Sub ScrollBar1_Change() Label1.Caption = ScrollBar1.Value End Sub |
Обе процедуры размещаются в модуле пользовательской формы VBA Excel.
Пример 2
Условие примера 2
- На пользовательской форме расположены элементы управления ScrollBar1 и TextBox1.
- Интервал значений для полосы прокрутки ScrollBar1 от 0 до 1000 единиц с шагом 10 и отображение текущего значения в поле элемента TextBox1.
- При открытии формы полоса прокрутки должна быть установлена в значение 0.
- Установка соответствующего значения полосы прокрутки при ручном изменении содержимого текстового поля.
- Предусмотреть сообщение о значении TextBox1, не входящем в интервал значений элемента управления ScrollBar1.
Решение примера 2
Первоначальные настройки при открытии пользовательской формы:
Private Sub UserForm_Initialize() Me.Caption = «Пример 2» With ScrollBar1 .Min = 0 .Max = 1000 .SmallChange = 10 .Value = 0 End With TextBox1.Text = «0» End Sub |
Обработка события Change объекта ScrollBar1:
Private Sub ScrollBar1_Change() TextBox1.Text = ScrollBar1.Value End Sub |
Обработка события Change объекта TextBox1:
Private Sub TextBox1_Change() On Error GoTo Instr ScrollBar1.Value = TextBox1.Text Exit Sub Instr: TextBox1.Text = «Недопустимое значение» End Sub |
Если содержимое элемента управления TextBox1 не соответствует интервалу значений полосы прокрутки, возникает ошибка (преобразование в число происходит автоматически). Чтобы ее избежать и вывести сообщение о недопустимости значения, используется обработчик ошибок.
Все три процедуры размещаются в модуле пользовательской формы.
Содержание
- ScrollBar control
- Remarks
- See also
- Support and feedback
- Элемент управления ScrollBar
- Замечания
- См. также
- Поддержка и обратная связь
- Свойство ScrollBars
- Синтаксис
- Settings
- Замечания
- См. также
- Поддержка и обратная связь
- VBA Excel. Элемент управления ScrollBar (полоса прокрутки)
- Элемент управления ScrollBar
- Свойства элемента ScrollBar
- Примеры кода с полосой прокрутки
- Пример 1
- Условие примера 1
- Решение примера 1
- Manipulating and changing scroll bars with VBA
- Display or Hide Scroll Bars
- Fix the Scroll Area
- Scroll to specific location on the worksheet
- Scroll by a specific number of rows or columns
Returns or sets the value of another control based on the position of the scroll box.
A ScrollBar is a stand-alone control you can place on a form. It’s visually like the scroll bar you see in certain objects such as a ListBox or the drop-down portion of a ComboBox. However, unlike the scroll bars in these examples, the stand-alone ScrollBar is not an integral part of any other control.
To use the ScrollBar to set or read the value of another control, you must write code for the events and methods of the ScrollBar. For example, to use the ScrollBar to update the value of a TextBox, you can write code that reads the Value property of the ScrollBar and then sets the Value property of the TextBox.
The default property for a ScrollBar is the Value property. The default event for a ScrollBar is the Change event.
To create a horizontal or vertical ScrollBar, drag the sizing handles of the ScrollBar horizontally or vertically on the form.
See also
Support and feedback
Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.
Источник
Возвращает или устанавливает значение другого элемента управления на основании положения полосы прокрутки.
Замечания
ScrollBar — это отдельностоящий элемент управления, который можно поместить на форму. Это визуально похоже на полосу прокрутки, которую вы видите в некоторых объектах, таких как ListBox или раскрывающийся список ComboBox. Однако, в отличие от полос прокрутки в этих примерах, элемент ScrollBar не является частью другого объекта.
Чтобы использовать ScrollBar для задания или считывания значения другого элемента управления, необходимо написать код для событий и методов ScrollBar. Например, чтобы использовать ScrollBar для обновления значения TextBox, можно написать код, который считывает свойство Valueэлемента ScrollBar , а затем задает свойство Valueэлемента TextBox.
Стандартное свойство объекта ScrollBar — Value. Стандартное событие объекта ScrollBar — Change.
Чтобы создать горизонтальный или вертикальный объект ScrollBar, перетащите его маркеры изменения размера на форме по горизонтали или по вертикали.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Источник
Определяет, содержит ли элемент управления, форма или страница вертикальные полосы прокрутки, горизонтальные полосы прокрутки или оба вида полос.
Синтаксис
object. ScrollBars [= fmScrollBars ]
Синтаксис свойства ScrollBars состоит из следующих частей:
Part | Описание |
---|---|
object | Обязательно. Допустимый объект. |
fmScrollBars | Необязательный параметр. Место отображения полос прокрутки. |
Settings
fmScrollBars может принимать следующие значения:
Константа | Значение | Описание |
---|---|---|
fmScrollBarsNone | 0 | Полосы прокрутки не отображаются (по умолчанию). |
fmScrollBarsHorizontal | 1 | Отображается горизонтальная полоса прокрутки. |
fmScrollBarsVertical | 2 | Отображается вертикальная полоса прокрутки. |
fmScrollBarsBoth | 3 | Отображаются и горизонтальная, и вертикальная полосы прокрутки. |
Замечания
Если значение свойства KeepScrollBarsVisible равно True, любая полоса прокрутки всегда видна на форме или странице, независимо от того, попадает ли содержание объекта в границы объекта.
Если полоса прокрутки видна, ее поле прокрутки ограничивается видимой областью полосы прокрутки. При необходимости также изменяется положение прокрутки, чтобы вся полоса прокрутки оставалась видимой. Диапазон полосы прокрутки меняется при изменении значения свойства ScrollBars, меняется размер прокручиваемой или видимой области.
Если полоса прокрутки не видна, можно задать для нее любое значение. Допустимы как отрицательные значения, так и значения, превышающие размер прокрутки.
Для однострочного элемента управления можно отобразить горизонтальную полосу прокрутки, используя свойства ScrollBars и AutoSize. Полосы прокрутки скрываются или отображаются в соответствии со следующими правилами:
Если для свойства ScrollBars задано значение fmScrollBarsNone, полоса прокрутки не отображается.
Если для свойства ScrollBars задано значение fmScrollBarsHorizontal или fmScrollBarsBoth, для элемента управления отображается горизонтальная полоса прокрутки, если текст длиннее области редактирования и если элемент управления содержит достаточно места, чтобы разместить полосу прокрутки под его областью редактирования.
Если для свойства AutoSize задано значение True, элемент управления увеличивается, чтобы вместить добавленную полосу прокрутки, если размер элемента управления максимален или близок к максимальному.
Для многострочного элемента TextBox можно отобразить полосы прокрутки с помощью свойств ScrollBars, WordWrap и AutoSize . Полосы прокрутки скрываются или отображаются в соответствии со следующими правилами:
Если для свойства ScrollBars задано значение fmScrollBarsNone, полоса прокрутки не отображается.
Если для свойства ScrollBars задано значение fmScrollBarsVertical или fmScrollBarsBoth, для элемента управления отображается вертикальная полоса прокрутки, если текст длиннее области редактирования и если элемент управления содержит достаточно места, чтобы разместить полосу прокрутки вдоль правого края его области редактирования.
Если для свойства WordWrap задано значение True, горизонтальная полоса прокрутки для многострочного элемента управления не показывается. Большинство многостроковых элементов управления не используют горизонтальную полосу прокрутки.
Горизонтальная полоса прокрутки может отображаться в многострочном элементе управления в случае одновременного выполнения следующих условий:
- Область редактирования содержит слово, оказывающееся длиннее ширины области редактирования.
- Для элемента управление включено использование горизонтальных полос прокрутки.
- В элементе управления достаточно места для размещения полосы прокрутки под областью редактирования.
- Для свойства WordWrap задано значение False.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Источник
Элемент управления пользовательской формы ScrollBar, применяемый в VBA Excel для создания полосы прокрутки. Свойства UserForm.ScrollBar, примеры кода.
Элемент управления ScrollBar предназначен в VBA Excel для ввода пользователем числовых данных, которые ограничены минимальным и максимальным значениями. Увеличение или уменьшение значения полосы прокрутки осуществляется с указанным шагом при помощи ползунка или кнопок.
Визуально, элемент управления ScrollBar состоит из полосы прокрутки и двух кнопок, работающих аналогично кнопкам элемента управления SpinButton. Ориентация может быть горизонтальной или вертикальной в зависимости от настроек.
Полоса прокрутки в VBA Excel используется в паре с элементом управления TextBox или Label. Вспомогательный элемент необходим, чтобы отобразить текущее значение 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
Условие примера 1
- На пользовательской форме VBA Excel расположены элементы управления ScrollBar1 и Label1.
- Необходимо задать для полосы прокрутки ScrollBar1 интервал значений от -100 до 100 единиц с шагом 5 и отображением текущего значения на элементе Label1.
- При открытии формы полоса прокрутки должна быть установлена на значении 0.
Решение примера 1
Первоначальные настройки при открытии пользовательской формы:
Источник
When recording a macro, Excel includes all the scroll bar movement in the code. Normally, we delete this code, as we just don’t need it. But occasionally, being able to control the scroll bars and their display properties is useful.
Scroll bars can be displayed or hidden. It is an application level setting, so will be applied to all workbooks open within the application.
The code below shows how to hide or display the scroll bars for all workbooks open in the application.
The below shows how to hide or display either the horizontal or vertical scroll bars for active workbook.
Fixing the scroll area will prevent a user from scrolling into or selecting any of the cells outside of the specified range. I use this with dashboards so that the user’s screen is always focused on the key information, even if they try to scroll it won’t let them.
The code below shows how to scroll to a specific row or column. Change the ScrollRow and ScrollColumn values to meet your requirements.
SmallScroll and LargeScroll can be used to scroll the window, using the active cell as a start point. The good news is that even if the code tries to scroll the horizontal or vertical position to be less than Row 1 or Column A the code will not create an error.
The values can be negative numbers. Up:=-20 is equivalent to Down:=20. The same is true for ToLeft and ToRight.
About the author
Hey, I’m Mark, and I run Excel Off The Grid.
My parents tell me that at the age of 7 I declared I was going to become a qualified accountant. I was either psychic or had no imagination, as that is exactly what happened. However, it wasn’t until I was 35 that my journey really began.
In 2015, I started a new job, for which I was regularly working after 10pm. As a result, I rarely saw my children during the week. So, I started searching for the secrets to automating Excel. I discovered that by building a small number of simple tools, I could combine them together in different ways to automate nearly all my regular tasks. This meant I could work less hours (and I got pay raises!). Today, I teach these techniques to other professionals in our training program so they too can spend less time at work (and more time with their children and doing the things they love).
Do you need help adapting this post to your needs?
I’m guessing the examples in this post don’t exactly match your situation. We all use Excel differently, so it’s impossible to write a post that will meet everybody’s needs. By taking the time to understand the techniques and principles in this post (and elsewhere on this site), you should be able to adapt it to your needs.
But, if you’re still struggling you should:
- Read other blogs, or watch YouTube videos on the same topic. You will benefit much more by discovering your own solutions.
- Ask the ‘Excel Ninja’ in your office. It’s amazing what things other people know.
- Ask a question in a forum like Mr Excel, or the Microsoft Answers Community. Remember, the people on these forums are generally giving their time for free. So take care to craft your question, make sure it’s clear and concise. List all the things you’ve tried, and provide screenshots, code segments and example workbooks.
- Use Excel Rescue, who are my consultancy partner. They help by providing solutions to smaller Excel problems.
What next?
Don’t go yet, there is plenty more to learn on Excel Off The Grid. Check out the latest posts:
Источник
Элемент управления 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 – вторая метка, удалите в ней весь текст, в ней мы будет отображать результат суммирования.
Теперь в редакторе кода для формы пропишем следующие процедуры:
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 полосу прокрутки.
UserForm Controls — ScrollBar and SpinButton
UserForm acts as a container in which you add multiple ActiveX controls, each of which has a specific use and associated properties. By itself, a UserForm will not be of much use unless ActiveX controls are added to it which are the actual user-interactive objects. Using ActiveX Controls on a Worksheet have been illustrated in detail, in the separate section of «Excel VBA: ActiveX Controls, Form Controls & AutoShapes on a Worksheet».
Also refer «2. UserForm and Controls — Properties» for properties common to the UserForm and most Controls
Note: In below given examples, vba codes are required to be entered in the Code Module of the UserForm, unless specified otherwise.
——————————————-
Contents:
ScrollBar Control
SpinButton Control
——————————————-
ScrollBar Control
A ScrollBar control enables to change (increment or decrement) the value displayed by other UserForm controls (viz. TextBox, Label, …) or the value in a worksheet range. It scrolls through a range of values when a user: (i) clicks on the scroll arrows; (ii) drags the scroll box; or (iii) clicks in an area between a scroll arrow and the scroll box. ScrollBar & SpinButton controls — the difference between the two is that the ScrollBar box can be dragged to change the control’s value over larger increments (while keeping the increment low for clicks) which advantages a ScrollBar to make a selection from across a large number of values and cover an extremely wide range.
SmallChange Property specifies the incremental change, as an integer value (Long variable), that occurs when a user clicks the scroll arrow. The LargeChange Property specifies the incremental change when the user clicks between a scroll arrow and the scroll box. The default value is 1 for both the properties.
Min and Max Properties are integer values (Long variable) which specify the minimum and maximum acceptable values of the ScrollBar control (for the Value property setting). In a vertical ScrollBar clicking down the scroll arrow increases the value and the lowest position displays the maximum value (will be reverse when you click up the scroll arrow). In a horizontal ScrollBar clicking the right scroll arrow increases the value and the rightmost position displays the maximum value (will be reverse when you click the left scroll arrow).
Orientation Property determines a vertical ScrollBar or a horizontal ScrollBar. It has 3 settings: (i) fmOrientationAuto (Value -1) — this is the default value wherein the ScrollBar dimensions automatically determine whether the ScrollBar is Vertical or Horizontal. Where width is more than height, ScrollBar is Horizontal and where height is more than width, ScrollBar is Vertical; (ii) FmOrientationVertical (Value 0) — vertical ScrollBar; and (iii) FmOrientationHorizontal (Value 1) — horizontal ScrollBar.
Example 1: Creating a Mortgage Calculator, using ScrollBar controls. Refer Image 29. See vba codes below:
Private Sub UserForm_Initialize()
‘Set properties of Controls on initialization of UserForm.
‘set properties for controls in re of Loan Amount:
TextBox1.BackColor = RGB(255, 255, 0)
TextBox1.TextAlign = fmTextAlignCenter
TextBox1.Font.Bold = True
TextBox1.Enabled = False
Label1.Caption = «Loan Amount ($):»
Label1.TextAlign = fmTextAlignLeft
ScrollBar1.Min = 0
ScrollBar1.Max = 10000
ScrollBar1.Orientation = fmOrientationHorizontal
ScrollBar1.SmallChange = 5
ScrollBar1.LargeChange = 100
ScrollBar1.Value = 0
‘set properties for controls in re of Annual Interest Rate:
TextBox2.BackColor = RGB(255, 255, 0)
TextBox2.TextAlign = fmTextAlignCenter
TextBox2.Font.Bold = True
TextBox2.Enabled = False
Label2.Caption = «Annual Int Rate (%):»
Label2.TextAlign = fmTextAlignLeft
ScrollBar2.Min = 0
ScrollBar2.Max = 1000
ScrollBar2.Orientation = fmOrientationHorizontal
ScrollBar2.SmallChange = 1
ScrollBar2.LargeChange = 10
ScrollBar2.Value = 0
‘set properties for controls in re of Loan Tenure:
TextBox3.BackColor = RGB(255, 255, 0)
TextBox3.TextAlign = fmTextAlignCenter
TextBox3.Font.Bold = True
TextBox3.Enabled = False
Label3.Caption = «Loan Tenure (Yrs)»
Label3.TextAlign = fmTextAlignLeft
ScrollBar3.Min = 0
ScrollBar3.Max = 50
ScrollBar3.Orientation = fmOrientationHorizontal
ScrollBar3.SmallChange = 1
ScrollBar3.LargeChange = 4
ScrollBar3.Value = 0
‘set properties for Label which displays Monthly Instalment:
Label4.Caption = «Monthly Instalment: $»
Label4.TextAlign = fmTextAlignCenter
Label4.BackColor = RGB(0, 255, 0)
Label4.Font.Bold = True
End Sub
Private Sub ScrollBar1_Change()
‘in re of Loan Amount, clicking the scroll arrow will increment amount by $5,000 and clicking between a scroll arrow and the scroll box will increment amount by $100,000:
TextBox1.Value = ScrollBar1.Value * 1000
TextBox1.Value = «$» & Format(TextBox1.Value, «#,##0»)
End Sub
Private Sub ScrollBar2_Change()
‘in re of Annual Interest Rate, clicking the scroll arrow will increment rate by 0.1% and clicking between a scroll arrow and the scroll box will increment rate by 1%:
TextBox2.Value = ScrollBar2.Value / 10
End Sub
Private Sub ScrollBar3_Change()
‘in re of Loan Tenure, clicking the scroll arrow will increment year by 0.5 and clicking between a scroll arrow and the scroll box will increment year by 2:
TextBox3.Value = ScrollBar3.Value / 2
End Sub
Private Sub CommandButton1_Click()
‘calculates the Monthly Instalment using the excel PMT function:
Dim mi As Currency
If Not TextBox1.Value > 0 Then
MsgBox «Please Enter Loan Amount!»
Exit Sub
ElseIf Not TextBox2.Value > 0 Then
MsgBox «Please Enter Annual Interest Rate!»
Exit Sub
ElseIf Not TextBox3.Value > 0 Then
MsgBox «Please Enter Loan Tenure!»
Exit Sub
Else
mi = Pmt((TextBox2.Value / 100) / 12, TextBox3.Value * 12, TextBox1.Value)
‘Label displays the monthly instalment, rounded off to 2 decimal points:
Label4.Caption = «Monthly Instalment: $» & Round(mi, 2) * -1
End If
End Sub
Private Sub CommandButton2_Click()
‘close button unloads the UserForm
Unload Me
End Sub
————————————————————————————————————-
SpinButton Control
A SpinButton control, similar to a ScrollBar control, is used to increment or decrement the value (viz. a number, date, time, etc.) displayed by other UserForm controls (viz. TextBox, Label, …) or the value in a worksheet range. A SpinButton control (also referred to as a Spinner control) functions like a ScrollBar control, with similar properties (viz. SmallChange, Min, Max, Orientation, …). SmallChange Property specifies the incremental change, as an integer value (Long variable), that occurs when a user clicks the scroll arrow. A SpinButton control does not have a LargeChange property, like in a ScrollBar. In a vertical ScrollBar clicking up the scroll arrow decreases the value whereas clicking up the scroll arrow on a vertical Spinner increases the value.
ScrollBar & SpinButton controls — the difference between the two is that the ScrollBar box can be dragged to change the control’s value over larger increments (while keeping the increment low for clicks) which advantages a ScrollBar to make a selection from across a large number of values and cover an extremely wide range.
Example 2: Using a SpinButton control to change dates in TextBox, within a specified range:
Private Sub UserForm_Initialize()
‘populate a date in the TextBox
Dim dt As Date
‘disallow manual input in TextBox
TextBox1.Enabled = False
dt = «09/15/2011»
TextBox1.Text = dt
End Sub
Private Sub SpinButton1_SpinUp()
‘increase date by one day at a time, within the same month:
Dim dtUpper As Date
dtUpper = «09/30/2011»
If DateValue(TextBox1.Text) < dtUpper Then
TextBox1.Text = DateValue(TextBox1.Text) + 1
End If
End Sub
Private Sub SpinButton1_SpinDown()
‘decrease date by one day at a time, within the same month:
Dim dtLower As Date
If DateValue(TextBox1.Text) > dtLower Then
TextBox1.Text = DateValue(TextBox1.Text) — 1
End If
End Sub
Example 3: Move ListBox Items Up/Down in the list order and in the worksheet range, using the SpinButton control (by clicking Up or Down the scroll arrow). Refer Image 30. See below vba codes:
Private Sub loadListBox()
‘load ListBox from worksheet range:
Dim n As Integer
Dim cell As Range
Dim rng As Range
Set rng = Sheet7.Range(«A1:A6»)
For n = 1 To ListBox1.ListCount
ListBox1.RemoveItem ListBox1.ListCount — 1
Next n
For Each cell In rng.Cells
Me.ListBox1.AddItem cell.Value
Next cell
End Sub
Private Sub UserForm_Initialize()
‘loads ListBox on initializing of UserForm
loadListBox
End Sub
Private Sub SpinButton1_SpinUp()
‘clicking up the scroll arrow moves the selected ListBox item one up both in the list order and also in the linked worksheet range:
Dim n As Long
n = ListBox1.ListIndex
If n > 0 Then
Sheet7.Range(«A» & n + 1).Value = Sheet7.Range(«A» & n).Value
Sheet7.Range(«A» & n).Value = ListBox1.Value
loadListBox
ListBox1.Selected(n — 1) = True
ElseIf ListBox1.ListIndex = 0 Then
MsgBox «First Item cannot be moved Up!»
Else
MsgBox «Please select item!»
End If
End Sub
Private Sub SpinButton1_SpinDown()
‘clicking down the scroll arrow moves the selected ListBox item one down both in the list order and also in the linked worksheet range:
Dim n As Long
n = ListBox1.ListIndex
If n >= 0 And n < ListBox1.ListCount — 1 Then
Sheet7.Range(«A» & n + 1).Value = Sheet7.Range(«A» & n + 2).Value
Sheet7.Range(«A» & n + 2).Value = ListBox1.Value
loadListBox
ListBox1.Selected(n + 1) = True
ElseIf ListBox1.ListIndex = ListBox1.ListCount — 1 Then
MsgBox «Last Item cannot be moved Down!»
Else
MsgBox «Please select item!»
End If
End Sub
Private Sub CommandButton1_Click()
‘clicking the Close button unloads the UserForm
Unload Me
End Sub
When recording a macro, Excel includes all the scroll bar movement in the code. Normally, we delete this code, as we just don’t need it. But occasionally, being able to control the scroll bars and their display properties is useful.
Display or Hide Scroll Bars
Scroll bars can be displayed or hidden. It is an application level setting, so will be applied to all workbooks open within the application.
The code below shows how to hide or display the scroll bars for all workbooks open in the application.
'Display all Scroll Bars Application.DisplayScrollBars = True 'Hide all Scroll Bars Application.DisplayScrollBars = False
The below shows how to hide or display either the horizontal or vertical scroll bars for active workbook.
'Hide all the vertical or horizontal Scroll Bar ActiveWindow.DisplayHorizontalScrollBar = False ActiveWindow.DisplayVerticalScrollBar = False 'Display the vertical or horizontal Scroll Bar ActiveWindow.DisplayHorizontalScrollBar = True ActiveWindow.DisplayVerticalScrollBar = True
Fix the Scroll Area
Fixing the scroll area will prevent a user from scrolling into or selecting any of the cells outside of the specified range. I use this with dashboards so that the user’s screen is always focused on the key information, even if they try to scroll it won’t let them.
'Set the scroll area to a specific range
ActiveSheet.ScrollArea = "A10:D20"
'Reset the scroll area
ActiveSheet.ScrollArea = ""
Scroll to specific location on the worksheet
The code below shows how to scroll to a specific row or column. Change the ScrollRow and ScrollColumn values to meet your requirements.
'Scroll to a specific row and column
ActiveWindow.ScrollRow = 1
ActiveWindow.ScrollColumn = 10
Scroll by a specific number of rows or columns
SmallScroll and LargeScroll can be used to scroll the window, using the active cell as a start point. The good news is that even if the code tries to scroll the horizontal or vertical position to be less than Row 1 or Column A the code will not create an error.
'Scroll horizontally or vertically by a specific number of rows or columns
ActiveWindow.SmallScroll Up:=100
ActiveWindow.SmallScroll Down:=50
ActiveWindow.SmallScroll ToRight:=8
ActiveWindow.SmallScroll ToLeft:=8
'The SmallScroll method can be applied within a single line
ActiveWindow.SmallScroll Up:=20, ToRight:=10
'The SmallScroll method can be applied without referencing the direction. 'The arguments must be presented in the order show below 'ActiveWindow.SmallScroll ([Down], [Up], [ToRight], [ToLeft]) ActiveWindow.SmallScroll 20, , 30,
'LargeScroll also exists as a method. LongScroll will scroll a page at a time, 'rather than individual row/column ActiveWindow.LargeScroll Down:=2, ToLeft:=1
The values can be negative numbers. Up:=-20 is equivalent to Down:=20. The same is true for ToLeft and ToRight.
About the author
Hey, I’m Mark, and I run Excel Off The Grid.
My parents tell me that at the age of 7 I declared I was going to become a qualified accountant. I was either psychic or had no imagination, as that is exactly what happened. However, it wasn’t until I was 35 that my journey really began.
In 2015, I started a new job, for which I was regularly working after 10pm. As a result, I rarely saw my children during the week. So, I started searching for the secrets to automating Excel. I discovered that by building a small number of simple tools, I could combine them together in different ways to automate nearly all my regular tasks. This meant I could work less hours (and I got pay raises!). Today, I teach these techniques to other professionals in our training program so they too can spend less time at work (and more time with their children and doing the things they love).
Do you need help adapting this post to your needs?
I’m guessing the examples in this post don’t exactly match your situation. We all use Excel differently, so it’s impossible to write a post that will meet everybody’s needs. By taking the time to understand the techniques and principles in this post (and elsewhere on this site), you should be able to adapt it to your needs.
But, if you’re still struggling you should:
- Read other blogs, or watch YouTube videos on the same topic. You will benefit much more by discovering your own solutions.
- Ask the ‘Excel Ninja’ in your office. It’s amazing what things other people know.
- Ask a question in a forum like Mr Excel, or the Microsoft Answers Community. Remember, the people on these forums are generally giving their time for free. So take care to craft your question, make sure it’s clear and concise. List all the things you’ve tried, and provide screenshots, code segments and example workbooks.
- Use Excel Rescue, who are my consultancy partner. They help by providing solutions to smaller Excel problems.
What next?
Don’t go yet, there is plenty more to learn on Excel Off The Grid. Check out the latest posts: