Textbox with scrollbar in excel

У Уокенбаха есть пример мастера по расчету платежей по кредиту (см вложенный файл Loan.xlsm Файл весит 108кб поэтому пришлось заинуть в облако) [moder]Файл вложен в сообщение #4[/moder]

Я решил добавить в ЮзерФорму под названием FormMain на шаге №2 полосу ScrollBar (в коде ее название: sbPurchasePrice) (см вложенный рисунок), которая связана с полем «Возвращаемая сумма» (в коде ее название: tbPurchasePrice) так, что пользователь может не только руками сумму в этом поле набивать, но и менять сумму прокручивая эту полосу прокрутки sbPurchasePrice

Вот так я добавил полосу прокрутки в форму ForMain:
[vba]

Private Sub sbPurchasePrice_Change()
With sbPurchasePrice
.Min = 0
.Max = 10000000
.SmallChange = 1000
.LargeChange = 10000
tbPurchasePrice.Text = .Value
End With
End Sub

Когда крутишь полосу прокрутки , сразу меняется и значение возвращаемой сумму в поле tbPurchasePrice

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

В коде формы FormMain я попытался решить задачу , добавив в изначальный код Уокенбаха вот эту закомментированную строку:

‘STEP 2 EVENT HANDLERS
Private Sub tbPurchasePrice_Change()
‘ sbPurchasePrice.Value = Val(tbPurchasePrice.Text)
Call UpdateLoanAmount
End Sub

Если ее раскомментировать, то Макрос выдает ошибку!

Хотя , например точно такой же метод работает во вложенном файле TestSB и никаких ошибок нет
[vba]

Private Sub OK_Click()
Unload Me
End Sub

Private Sub ScrollBar1_Change()
With ScrollBar1
.Min = 0
.Max = 10000000
.SmallChange = 1000
.LargeChange = 10000
TextBox1.Text = .Value
End With
End Sub

Private Sub TextBox1_Change()
ScrollBar1.Value = Val(TextBox1.Text)
End Sub

Помогите пожалуйста понять в чем затык?

У Уокенбаха есть пример мастера по расчету платежей по кредиту (см вложенный файл Loan.xlsm Файл весит 108кб поэтому пришлось заинуть в облако) [moder]Файл вложен в сообщение #4[/moder]

Я решил добавить в ЮзерФорму под названием FormMain на шаге №2 полосу ScrollBar (в коде ее название: sbPurchasePrice) (см вложенный рисунок), которая связана с полем «Возвращаемая сумма» (в коде ее название: tbPurchasePrice) так, что пользователь может не только руками сумму в этом поле набивать, но и менять сумму прокручивая эту полосу прокрутки sbPurchasePrice

Вот так я добавил полосу прокрутки в форму ForMain:
[vba]

Private Sub sbPurchasePrice_Change()
With sbPurchasePrice
.Min = 0
.Max = 10000000
.SmallChange = 1000
.LargeChange = 10000
tbPurchasePrice.Text = .Value
End With
End Sub

Когда крутишь полосу прокрутки , сразу меняется и значение возвращаемой сумму в поле tbPurchasePrice

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

В коде формы FormMain я попытался решить задачу , добавив в изначальный код Уокенбаха вот эту закомментированную строку:

‘STEP 2 EVENT HANDLERS
Private Sub tbPurchasePrice_Change()
‘ sbPurchasePrice.Value = Val(tbPurchasePrice.Text)
Call UpdateLoanAmount
End Sub

Если ее раскомментировать, то Макрос выдает ошибку!

Хотя , например точно такой же метод работает во вложенном файле TestSB и никаких ошибок нет
[vba]

Private Sub OK_Click()
Unload Me
End Sub

Private Sub ScrollBar1_Change()
With ScrollBar1
.Min = 0
.Max = 10000000
.SmallChange = 1000
.LargeChange = 10000
TextBox1.Text = .Value
End With
End Sub

Private Sub TextBox1_Change()
ScrollBar1.Value = Val(TextBox1.Text)
End Sub

Помогите пожалуйста понять в чем затык? t330

Сообщение Всем привет!

У Уокенбаха есть пример мастера по расчету платежей по кредиту (см вложенный файл Loan.xlsm Файл весит 108кб поэтому пришлось заинуть в облако) [moder]Файл вложен в сообщение #4[/moder]

Я решил добавить в ЮзерФорму под названием FormMain на шаге №2 полосу ScrollBar (в коде ее название: sbPurchasePrice) (см вложенный рисунок), которая связана с полем «Возвращаемая сумма» (в коде ее название: tbPurchasePrice) так, что пользователь может не только руками сумму в этом поле набивать, но и менять сумму прокручивая эту полосу прокрутки sbPurchasePrice

Вот так я добавил полосу прокрутки в форму ForMain:
[vba]

Private Sub sbPurchasePrice_Change()
With sbPurchasePrice
.Min = 0
.Max = 10000000
.SmallChange = 1000
.LargeChange = 10000
tbPurchasePrice.Text = .Value
End With
End Sub

Когда крутишь полосу прокрутки , сразу меняется и значение возвращаемой сумму в поле tbPurchasePrice

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

В коде формы FormMain я попытался решить задачу , добавив в изначальный код Уокенбаха вот эту закомментированную строку:

‘STEP 2 EVENT HANDLERS
Private Sub tbPurchasePrice_Change()
‘ sbPurchasePrice.Value = Val(tbPurchasePrice.Text)
Call UpdateLoanAmount
End Sub

Если ее раскомментировать, то Макрос выдает ошибку!

Хотя , например точно такой же метод работает во вложенном файле TestSB и никаких ошибок нет
[vba]

Private Sub OK_Click()
Unload Me
End Sub

Private Sub ScrollBar1_Change()
With ScrollBar1
.Min = 0
.Max = 10000000
.SmallChange = 1000
.LargeChange = 10000
TextBox1.Text = .Value
End With
End Sub

Private Sub TextBox1_Change()
ScrollBar1.Value = Val(TextBox1.Text)
End Sub

Помогите пожалуйста понять в чем затык? Автор — t330
Дата добавления — 18.04.2019 в 16:30

Sometimes we need to add a textbox into current worksheet to edit some comments for purpose. And if we want to type a long comment but with textbox length or width limit, we need to add a scroll bar for this textbox, then we can drag the scroll bar to show all contents. Adding scroll bar can prevent contents in textbox from truncating, this article will show you the method to create a textbox with scroll bar in excel.

Expectation:

Add a scrollbar for textbox control.

Create or Insert A Textbox Control with Scroll Bar 1


Step 1: Click Developer in ribbon, then click Insert arrow button to load Form Controls. Select Text Box control.

Create or Insert A Textbox Control with Scroll Bar 2

Step 2: Drag your mouse to draw a textbox.

Create or Insert A Textbox Control with Scroll Bar 3

Step 3: If you want to adjust the size of textbox, click Design Mode under Controls group.

Create or Insert A Textbox Control with Scroll Bar 4

Then click on textbox control, then selected textbox is in design mode and adjustable, you can drag any circle to extend or reduce the size.

Step 4: After adjusting textbox size, click Properties under Developer.

Create or Insert A Textbox Control with Scroll Bar 6

And Properties window pops up.

Create or Insert A Textbox Control with Scroll Bar 7

Step 5: Drag the scrollbar till MultiLine and ScorllBars show on the window. Set MultiLine with True, and in ScrollBars dropdown list, select the third choice ‘2 – fmScrollBarsVertical’.

Create or Insert A Textbox Control with Scroll Bar 8

Normally we often add vertical scrollbar, if you want to add horizontal scrollbar, you can select the second choice ‘1 – fmScrollBarsHorizontal’.

Create or Insert A Textbox Control with Scroll Bar 9

Step 6: Click Design Mode again to quit design mode. Then type a long sentence into textbox.

Create or Insert A Textbox Control with Scroll Bar 10

When entering texts over the textbox, a scrollbar will be displayed. You can drag scrollbar to show all texts.

Элемент управления пользовательской формы ScrollBar, применяемый в VBA Excel для создания полосы прокрутки. Свойства UserForm.ScrollBar, примеры кода.

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

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

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

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

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

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

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

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

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

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

Примеры кода с полосой прокрутки

Пример 1

Условие примера 1

  1. На пользовательской форме VBA Excel расположены элементы управления ScrollBar1 и Label1.
  2. Необходимо задать для полосы прокрутки ScrollBar1 интервал значений от -100 до 100 единиц с шагом 5 и отображением текущего значения на элементе Label1.
  3. При открытии формы полоса прокрутки должна быть установлена на значении 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

  1. На пользовательской форме расположены элементы управления ScrollBar1 и TextBox1.
  2. Интервал значений для полосы прокрутки ScrollBar1 от 0 до 1000 единиц с шагом 10 и отображение текущего значения в поле элемента TextBox1.
  3. При открытии формы полоса прокрутки должна быть установлена в значение 0.
  4. Установка соответствующего значения полосы прокрутки при ручном изменении содержимого текстового поля.
  5. Предусмотреть сообщение о значении 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 не соответствует интервалу значений полосы прокрутки, возникает ошибка (преобразование в число происходит автоматически). Чтобы ее избежать и вывести сообщение о недопустимости значения, используется обработчик ошибок.

Все три процедуры размещаются в модуле пользовательской формы.

Excel for Microsoft 365 Excel 2021 Excel 2019 Excel 2016 Excel 2013 Excel 2010 More…Less

If someone’s entering data inaccurately, or you think a coworker may be confused about how to enter data, add a label. A simple name, such as «Phone,» lets others know what to put in a cell, and your labels can also provide more complex instructions.

You can add labels to forms and ActiveX controls.

Add a label (Form control)

  1. Click Developer, click Insert, and then click Label Button image.

    Controls group

  2. Click the worksheet location where you want the upper-left corner of the label to appear.

  3. To specify the control properties, right-click the control, and then click Format Control.

  1. Click Developer and then click Insert, and under ActiveX Controls, click Label Button image.

    Controls group

  2. Click the worksheet location where you want the upper-left corner of the label to appear.

  3. Click Design Mode Button image.

  4. Click the worksheet location where you want the upper-left corner of the label to appear.

  5. To specify the control properties, click Properties Button image.

    Tip: You can also right-click the label, and then click Properties.

    The Properties dialog box appears. For detailed information about each property, select the property, and then press F1 to display a Visual Basic Help topic. You can also type the property name in the Visual Basic Help Search box. This table summarizes the properties.

    Summary of label properties by functional category

If you want to specify

Use this property

General:

Whether the control is loaded when the workbook is opened. (Ignored for ActiveX controls.)

AutoLoad (Excel)

Whether the control can receive the focus and respond to user-generated events.

Enabled (Form)

Whether the control can be edited.

Locked (Form)

The name of the control.

Name (Form)

The way the control is attached to the cells below it (free floating, move but do not size, or move and size).

Placement (Excel)

Whether the control can be printed.

PrintObject (Excel)

Whether the control is visible or hidden.

Visible (Form)

Text:

Font attributes (bold, italic, size, strikethrough, underline, and weight).

Bold, Italic, Size, StrikeThrough, Underline, Weight (Form)

Descriptive text on the control that identifies or describes it.

Caption (Form)

How text is aligned in the control (left, center, or right).

TextAlign (Form)

Whether the contents of the control automatically wrap at the end of a line.

WordWrap (Form)

Size and position:

Whether the size of the control automatically adjusts to display all contents.

AutoSize (Form)

The height or width in points.

Height, Width (Form)

The distance between the control and the left or top edge of the worksheet.

Left, Top (Form)

Formatting:

The background color.

BackColor (Form)

The background style (transparent or opaque).

BackStyle (Form)

The color of the border.

BorderColor (Form)

The type of border (none or single-line).

BorderStyle (Form)

The foreground color.

ForeColor (Form)

Whether the control has a shadow.

Shadow (Excel)

The visual appearance of the border (flat, raised, sunken, etched, or bump).

SpecialEffect (Form)

Image:

The bitmap to display in the control.

Picture (Form)

The location of the picture relative to its caption (left, top, right, and so on).

PicturePosition (Form)

Keyboard and mouse:

The shortcut key for the control.

Accelerator (Form)

A custom mouse icon.

MouseIcon (Form)

The type of pointer that is displayed when the user positions the mouse over a particular object (for example, standard, arrow, or I-beam).

MousePointer (Form)

  1. Click Developer and then click Insert, and under ActiveX Controls, click Text Box Button image.

    Controls group

  2. Click the worksheet location where you want the upper-left corner of the text box to appear.

  3. To edit the ActiveX control, click Design Mode Button image.

  4. To specify the control properties, click Properties Button image.

    Tip: You can also right-click the text box, and then click Properties.

    The Properties dialog box appears. For detailed information about each property, select the property, and then press F1 to display a Visual Basic Help topic. You can also type the property name in the Visual Basic Help Search box. The following section summarizes the properties that are available.

    Summary of text box properties by functional category

If you want to specify

Use this property

General:

Whether the control is loaded when the workbook is opened. (Ignored for ActiveX controls.)

AutoLoad (Excel)

Whether the control can receive the focus and respond to user-generated events.

Enabled (Form)

Whether the control can be edited.

Locked (Form)

The name of the control.

Name (Form)

The way the control is attached to the cells below it (free floating, move but do not size, or move and size).

Placement (Excel)

Whether the control can be printed.

PrintObject (Excel)

Whether the control is visible or hidden.

Visible (Form)

Text:

Whether a word or a character is the basic unit used to extend a selection.

AutoWordSelect (Form)

Font attributes (bold, italic, size, strikethrough, underline, and weight).

Bold, Italic, Size, StrikeThrough, Underline, Weight (Form)

Whether selected text remains highlighted when the control does not have the focus.

HideSelection (Form)

The default run time mode of the Input Method Editor (IME).

IMEMode (Form)

Whether the size of the control adjusts to display full or partial lines of text.

IntegralHeight (Form)

The maximum number of characters a user can enter.

MaxLength (Form)

Whether the control supports multiple lines of text.

MultiLine (Form)

Placeholder characters, such as an asterisk (*), to be displayed instead of actual characters.

PasswordChar (Form)

Whether the user can select a line of text by clicking to the left of the text.

SelectionMargin (Form)

The text in the control.

Text (Form)

How text is aligned in the control (left, center, or right).

TextAlign (Form)

Whether the contents of the control automatically wrap at the end of a line.

WordWrap (Form)

Data and binding:

The range that is linked to the control’s value.

LinkedCell (Excel)

The content or state of the control.

Value (Form)

Size and position:

Whether the size of the control automatically adjusts to display all the contents.

AutoSize (Form)

The height or width in points.

Height, Width (Form)

The distance between the control and the left or top edge of the worksheet.

Left, Top (Form)

Formatting:

The background color.

BackColor (Form)

The background style (transparent or opaque).

BackStyle (Form)

The color of the border.

BorderColor (Form)

The type of border (none or a single-line).

BorderStyle (Form)

The foreground color.

ForeColor (Form)

Whether the control has a shadow.

Shadow (Excel)

The visual appearance of the border (flat, raised, sunken, etched, or bump).

SpecialEffect (Form)

Whether an automatic tab occurs when a user enters the maximum allowable characters into the control.

AutoTab (Form)

Keyboard and mouse:

Whether drag-and-drop is enabled.

DragBehavior (Form)

The selection behavior when entering the control (select all or do not select).

EnterFieldBehavior (Form)

The effect of pressing ENTER (create a new line or move focus).

EnterKeyBehavior (Form)

A custom mouse icon.

MouseIcon (Form)

The type of pointer that is displayed when the user positions the mouse over a particular object (for example, standard, arrow, or I-beam).

MousePointer (Form)

Whether tabs are allowed in the edit region.

TabKeyBehavior (Form)

Specific to Text Box:

Whether the control has vertical scroll bars, horizontal scroll bars, or both.

ScrollBars (Form)

  1. Click File, click Options, and then click Customize Ribbon.

  2. Under Main Tabs , select the Developer check box, and then click OK.

A label identifies the purpose of a cell or text box, displays brief instructions, or provides a title or caption. A label can also display a descriptive picture. Use a label for flexible placement of instructions, to emphasize text, and when merged cells or a specific cell location is not a practical solution.

A text box is a rectangular box in which you can view, enter, or edit text or data in a cell. A text box can also be a static, and display data users can only read. Use a text box as an alternative to entering text in a cell, when you want to display an object that floats freely. You can also use a text box to display or view text that is independent of row and column boundaries, preserving the layout of a grid or table of data on the worksheet.

Label on a form control:

Example of a Form label control

An ActiveX control label:

Example of an ActiveX label control

An ActiveX text box control:

Example of an ActiveX text box control

Notes: 

  • To create a text box with a set of placeholder characters that accepts a password, use the PasswordChar property. Make sure that you protect the linked cell or other location in which the text is stored. Use strong passwords that combine uppercase and lowercase letters, numbers, and symbols, such as Y6dh!et5, not House27. Passwords should be 8 or more characters;14 is better.

    And don’t forget your password. If you do, we can’t help you retrieve it. Office doesn’t have a master key to unlock anything. Store passwords in a secure place away from the information they help protect.

  • To create a scrolling, multiple-line text box with horizontal and vertical scroll bars, set MultiLine to True, AutoSize and WordWrap to False, ScrollBars to 3, and LinkedCell to the cell address (such as D1) that you want to contain the text. To enter a new line, the user must press either CTRL+ENTER or SHIFT+ENTER, which generates a special character that is stored in the linked cell.

Need more help?

Всем привет!

У Уокенбаха есть пример мастера по расчету платежей по кредиту (см вложенный файл Loan.xlsm Файл весит 108кб поэтому пришлось заинуть в облако) [moder]Файл вложен в сообщение #4[/moder]

Я решил добавить в ЮзерФорму под названием FormMain на шаге №2 полосу ScrollBar (в коде ее название: sbPurchasePrice) (см вложенный рисунок), которая связана с полем «Возвращаемая сумма» (в коде ее название: tbPurchasePrice) так, что пользователь может не только руками сумму в этом поле набивать, но и менять сумму прокручивая эту полосу прокрутки sbPurchasePrice

Вот так я добавил полосу прокрутки в форму ForMain:
[vba]

Код

Private Sub sbPurchasePrice_Change()
With sbPurchasePrice
        .Min = 0
        .Max = 10000000
        .SmallChange = 1000
        .LargeChange = 10000
        tbPurchasePrice.Text = .Value
    End With
End Sub

[/vba]

Когда крутишь полосу прокрутки , сразу меняется и значение возвращаемой сумму в поле tbPurchasePrice

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

В коде формы FormMain я попытался решить задачу , добавив в изначальный код Уокенбаха вот эту закомментированную строку:

[vba]

Код

‘STEP 2 EVENT HANDLERS
Private Sub tbPurchasePrice_Change()
   ‘ sbPurchasePrice.Value = Val(tbPurchasePrice.Text)
    Call UpdateLoanAmount
End Sub

[/vba]

Если ее раскомментировать, то Макрос выдает ошибку!

Хотя , например точно такой же метод работает во вложенном файле TestSB и никаких ошибок нет
[vba]

Код

Option Explicit

Private Sub OK_Click()
Unload Me
End Sub

Private Sub ScrollBar1_Change()
    With ScrollBar1
        .Min = 0
        .Max = 10000000
        .SmallChange = 1000
        .LargeChange = 10000
        TextBox1.Text = .Value
    End With
End Sub

Private Sub TextBox1_Change()
ScrollBar1.Value = Val(TextBox1.Text)
End Sub

[/vba]

Помогите пожалуйста понять в чем затык?

Понравилась статья? Поделить с друзьями:
  • Text overflow break word
  • Textbox vba excel только цифры
  • Text over picture word
  • Textbox vba excel примеры
  • Text over border word