Элемент управления пользовательской формы 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 не соответствует интервалу значений полосы прокрутки, возникает ошибка (преобразование в число происходит автоматически). Чтобы ее избежать и вывести сообщение о недопустимости значения, используется обработчик ошибок.
Все три процедуры размещаются в модуле пользовательской формы.
Using VBA buttons scroll down or scroll up
Different from the previous example where we used the find
command to move in the sheet, this example really uses the scroll function
to move in the sheet.
With this function you can do more complex movement and always the same
in all directions in a very accurate manner.
In our example, when you press on one button, it will go to another
button and then to another again and all this in circle. The perpetual
movement invented in VBA.
The function to scroll is the following.
ActiveWindow.SmallScroll Down:= 12
This will scroll down in the active window by 12 cells.
To scroll up, replace 12 by -12
ActiveWindow.SmallScroll ToRight:= 2
This will scroll to the right by 2 cells.
Here the code.
Now open the visual basic editor with ALT-F11.
The full code you have to write is:
Sub Name_of_procedure()
ActiveWindow.SmallScroll Down:=12
ActiveWindow.SmallScroll Right:=2
End Sub
This sheet contains 4 procedures that mix the 2 lines before.
scroll_down: goes down by 12
scroll_up: goes up by 12,
reached_bottom: when you reach the bottom it goes up by
12 and to the right by 2.
almost_top: when you reach on button before the top, it
will go up by 12 and to the left by 2.
You can download this example
here.
Please Tweet, Like or Share us if you enjoyed.
Return to VBA Code Examples
You may need a workbook to always open to a specific view or location on a sheet, or possibly just change the view from a macro. You can do this by using the ScrollRow and ScrollColumn.
ScrollRow
Used to programmatically scroll a spreadsheet vertically. This example will scroll a spreadsheet to row 5.
ActiveWindow.ScrollRow = 5
ScrollColumn
Used to programmatically scroll a spreadsheet horizontally. This example will scroll a spreadsheet to column 5.
ActiveWindow.ScrollColumn = 5
AutoScroll to Certain Row & Column On Workbook Open
And placing the following code in a module will always scroll a workbook’s Sheet1 to row 5 and column 5 if macros are enabled upon opening:
Sub auto_open()
Sheet1.Activate
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollRow = 5
End Sub
VBA Coding Made Easy
Stop searching for VBA code online. Learn more about AutoMacro – A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!
Learn More!
Содержание
- ScrollBar control
- Remarks
- See also
- Support and feedback
- Метод Scroll (Microsoft Forms)
- Синтаксис
- Settings
- Замечания
- См. также
- Поддержка и обратная связь
- Excel-VBA Solutions
- Pages
- How to Use Scroll Bar in Userform
- Premium Excel Course Now Available!
- Build Professional — Unbreakable — Forms in Excel
- 45 Tutorials — 5+ Hours — Downloadable Excel Files
- Scrollable UserForm
- Sections:
- Make a Scrollable UserForm
- Notes
- Свойство ScrollBars
- Синтаксис
- Settings
- Замечания
- См. также
- Поддержка и обратная связь
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.
Источник
Перемещает полосу прокрутки на объект.
Синтаксис
object. Scroll( [ ActionX [, ActionY ]] )
Синтаксис метода Scroll состоит из следующих частей:
Part | Описание |
---|---|
object | Обязательно. Допустимое имя объекта. |
ActionX | Необязательный параметр. Определяет действие для горизонтального направления. |
ActionY | Необязательный параметр. Определяет действие для вертикального направления. |
Settings
Параметрами для ActionX и ActionY являются:
Константа | Значение | Описание |
---|---|---|
fmScrollActionNoChange | 0 | Прокрутка в указанном направлении отсутствует. |
fmScrollActionLineUp | 1 | Перемещение вверх по вертикальной полосе прокрутки или влево по горизонтальной полосе прокрутки. Перемещение эквивалентно нажатию клавиш стрелок вверх или влево для перемещения по полосе прокрутки. |
fmScrollActionLineDown | 2 | Перемещение вниз по вертикальной полосе прокрутки или вправо по горизонтальной полосе прокрутки. Перемещение эквивалентно нажатию клавиш стрелок вправо или вниз для перемещения по полосе прокрутки. |
fmScrollActionPageUp | 3 | Перемещение одной страницы вверх по вертикальной полосе прокрутки или одной страницы влево на горизонтальной полосе прокрутки. Перемещение эквивалентно нажатию на клавиатуре клавиши PAGE UP для перемещения по полосе прокрутки. |
fmScrollActionPageDown | 4 | Перемещение одной страницы вниз по вертикальной полосе прокрутки или одной страницы вправо на горизонтальной полосе прокрутки. Перемещение эквивалентно нажатию на клавиатуре клавиши PAGE DOWN для перемещения по полосе прокрутки. |
fmScrollActionBegin | 5 | Перемещение в верхний конец вертикальной полосы прокрутки или в левый конец горизонтальной полосы прокрутки. |
fmScrollActionEnd | 6 | Перемещение в нижний конец вертикальной полосы прокрутки или в правый конец горизонтальной полосы прокрутки. |
Замечания
Метод Scroll применяет полосы прокрутки, отображаемые на форме, рамке или странице , которая больше, чем ее область отображения. Этот метод не применяется к автономной полосе ScrollBar или полосам прокрутки, отображаемым в TextBox.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Источник
Excel-VBA Solutions
Want to become an expert in VBA? So this is the right place for you. This blog mainly focus on teaching how to apply Visual Basic for Microsoft Excel. So improve the functionality of your excel workbooks with the aid of this blog. Also ask any questions you have regarding MS Excel and applying VBA. We are happy to assist you.
Pages
How to Use Scroll Bar in Userform
Some times we need to use very large userforms in our VBA projects. Size of the form depends on the number of fields and various objects we have in our form. And if we need to show them in one window, we need to create big userform to put them all. You can create a form of any size by giving appropriate values for Height and width in properties window. But if our userform is bigger than the screen we need to use scroll bars inside our form. It is easier to put a scroll bar to a userform. But I saw that many people have problems with setting scroll bars correctly. Lot of people say that their scroll bars not working at run time. So there are few important things you should know when using scroll bars.
I will explain these important facts using a simple example. I have created a large form which has height of 1200 and width of 420. And there are a lot of text fields inside my userform.
If you look at properties window, you will notice that ScrollBars value is set to 0-fmScrollBarsNone by default. So we need to change this property depending on our requirement. If you have a userform with larger width, then you need to set ScrollBars value to 1-fmScrollBarsHorizontal. If you have a userform which has higher height, then you need to set this value to 2-fmScrollBarsVertical. And if you need scroll bars in both directions you can set the value to 3-fmScrollBarsBoth. You need to set to this value only if both width and height of your form is bigger than the screen.
You should set ScrollTop value to the 0. So then it will always appear at top.
Finally you need to set the ScrollHeight. It is very important to set appropriate value to this. Othewise you may not able to scroll up to the bottom of the form. Also if you set higher value, then user will scroll after the end of the objects. So user will see like your form is extended more than needed. So you should set a optimum value for this property for correct functionality and nice appearance. For example if you have a form having a height of 1200, you should set ScrollHeight value around 1850.
Источник
Premium Excel Course Now Available!
Build Professional — Unbreakable — Forms in Excel
45 Tutorials — 5+ Hours — Downloadable Excel Files
BLACK FRIDAY SALE (65%-80% Off)
Excel Courses Online
Video Lessons Excel Guides
How to make a scrollable UserForm. This allows you to put scroll bars onto a form so that it can hold information that is accesible when the user scrolls down or to the right.
Sections:
Make sure you are viewing the form. Alt+F11 to go to the VBA window > Double-click the UserForm from the Project window (Ctrl+R if you don’t see that window) and then make sure the form itself is selected and not a control within the form; do this by clicking the title bar at the top of the form.
Also, make sure the properties window is displayed, if it isn’t, hit F4 to display it.
- For now, make the form large enough to display all of the contents on it; then, look to the properties window and take note of the number for the Height property:
The value of 236.25 is what is needed to display everything on the form and this number will be used later in the tutorial.
If your form is very wide and you need a scroll bar to go left-to-right, also look to the Width property and take note of that number when the form is large enough to display everything. - Go down to the ScrollBars option.
Click the option to the right so that a menu appears.
Choose the correct option:
fmScrollBarsHorizontal means that left-to-right scroll bars will appear.
fmScrollBarsVertical means that up-and-down scroll bars will appear — most common choice.
fmScrollBarsBoth means that both horizontal and vertical scroll bars will appear. - Take the number that you got from Step 1 and put that into the ScrollHeight property if you are using vertical scroll bars and/or if you are using horizontal scroll bars, put the value from the Width property in for the ScrollWidth property.
In this example we will only use vertical scroll bars.
You will also notice that once you enter the number for the ScrollHeight or ScrollWidth property, the scroll bar will appear on the form, as you can see in the image above. - Make sure that the values for ScrollLeft and ScrollTop are set to 0. These properties allow you to have a form that is part of the way scrolled by default; if that sounds confusing, just wait until you get the scroll bars working and test some values for this field, say 20, and then run the form and you will understand.
- Resize the form so that it is the size that you want it to be, which should be smaller than it was in step 1. Once you do this, you will see that some of the controls will no longer be visible.
You are now ready to test the form out!
Run the form to see the results:
If you notice too much empty space at the bottom of the form, just go back to the property window and adjust the value for the ScrollHeight property until it looks right to you — do the same for the width if you are using horizontal scroll bars.
Notes
Adding scroll bars to UserForms is not difficult, it’s just a little bit annoying since it doesn’t work as intuitively as it seems like it should.
Just remember, to adjust these properties:
- ScrollBars
- ScrollHeight and/or ScrollWidth
- ScrollLeft and/or ScrollTop
The ScrollLeft and ScrollTop properties are rarely used because, usually, forms start at the upper-left-most position.
Make sure to download the sample file for this tutorial so you can see this example in Excel.
Источник
Определяет, содержит ли элемент управления, форма или страница вертикальные полосы прокрутки, горизонтальные полосы прокрутки или оба вида полос.
Синтаксис
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 и обратная связь.
Источник
Вам может потребоваться книга, чтобы всегда открывать конкретное представление или место на листе, или, возможно, просто изменить представление из макроса. Вы можете сделать это с помощью ScrollRow и ScrollColumn.
ScrollRow
Используется для программной прокрутки таблицы по вертикали. В этом примере таблица будет прокручиваться до строки 5.
ActiveWindow.ScrollRow = 5
ScrollColumn
Используется для программной прокрутки таблицы по горизонтали. В этом примере таблица будет прокручиваться до столбца 5.
ActiveWindow.ScrollColumn = 5
Автопрокрутка к определенной строке и столбцу при открытой книге
А размещение следующего кода в модуле всегда будет прокручивать Sheet1 книги до строки 5 и столбца 5, если макросы включены при открытии:
Sub auto_open () Sheet1.Activate ActiveWindow.ScrollColumn = 5 ActiveWindow.ScrollRow = 5 End Sub