Excel vba textbox on enter

В общем проблема состоит вот в чём. У меня есть форма, на ней куча текстбоксов, кнопок и меток (но это не важно). Каждый текстбокс и кнопка имеют свои определённые имена (не дефолтные). Мне на каждую кнопку и текстбокс нужно было привязать по одному обработчику одного события. И я воспользовался вот этим прекрасным методом:

1) Добавил класс cm_ControlsEvents, добавил ему необходимые контролы и соответствующие обработчики:

Код
Public WithEvents txbx As MSForms.TextBox
Public WithEvents btn As MSForms.CommandButton

Private Sub btn_Click()
    // выполняется код
End Sub

Private Sub txbx_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    // выполняется код
End Sub

2) Далее в ощем модуле объявил массив этих самых классов

Код
Public controlsArray() As New cm_ControlsEvents

3) И в процессе инициализации формы я заполняю массив ссылками на соответствующие контролы:

Код
Private Sub UserForm_Initialize()
    Dim item As Control, countControls As Integer
    ReDim controlsArray(Me.Controls.Count)
    countControls = 0
    For Each item In Me.Controls
        If TypeOf item Is MSForms.TextBox Then
            Set controlsArray(countControls).txbx = item
            item.TabStop = True
            countControls = countControls + 1
        ElseIf TypeOf item Is MSForms.CommandButton Then
            If item.Tag = "Copy" Then
            Set controlsArray(countControls).btn = item
                item.TabStop = False
                countControls = countControls + 1
            End If
        ElseIf Not TypeOf item Is MSForms.Label Then
            item.TabStop = False
            countControls = countControls + 1
        End If
    Next item
End Sub

Тут в код можно особо не вникать, всё там нормально заполняется и работает.

И теперь по клику на любой из кнопок корректно срабатывает событие btn_Click() и, соответственно, при нажатии клавиш в текстбоксе чётко отрабатывает событие txbx_KeyPress().

В общем проблем не было до тех пор, пока мне не понадобилось использовать событие txbx_Enter(). Дело в том, что если я его добавляю в класс cm_ControlsEvents

Код
Public WithEvents txbx As MSForms.TextBox
Public WithEvents btn As MSForms.CommandButton

Private Sub btn_Click()
    // выполняется код
End Sub

Private Sub txbx_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    // выполняется код
End Sub

Private Sub txbx_Enter()
   // должен выполняться код
End Sub

то оно просто-напросто не срабатывает ни под каким предлогом. Однако если же я в модуле формы просто объявлю обработчик для какого-то конкретного текстбокса, вот так:

Код
Sub txbx_GPP_2_Enter()
    MsgBox "Event enter txbx!"
End Sub

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

Вот суть проблемы. Прошу гуру VBA поделиться дельным советом по этому поводу. Заранее благодарен  

Содержание

  1. Событие TextBox.Enter (Access)
  2. Синтаксис
  3. Замечания
  4. Пример
  5. Поддержка и обратная связь
  6. EnterKey to press button in VBA Userform
  7. 6 Answers 6
  8. TextBox.EnterKeyBehavior Property (Outlook Forms Script)
  9. Синтаксис
  10. Замечания
  11. Поддержка и обратная связь
  12. VBA Excel. Элемент управления TextBox (текстовое поле)
  13. Элемент управления TextBox
  14. Свойства текстового поля
  15. Привязка текстового поля к ячейке
  16. Vba excel textbox по нажатию enter

Событие TextBox.Enter (Access)

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

Синтаксис

expression. Введите

Выражение Переменная, представляющая объект TextBox .

Замечания

Это событие не применяется к флажкам, кнопкам параметров или переключателям в группе параметров. Он применяется только к самой группе параметров.

Чтобы выполнить макрос или процедуру события при возникновении этих событий, присвойте свойству OnEnter или OnExit имя макроса или [Процедура события].

Так как событие Ввод возникает до перемещения фокуса к определенному элементу управления, для отображения инструкций можно использовать макрос или процедуру события Enter. Например, можно использовать макрос или процедуру события, чтобы отобразить небольшую форму или окно сообщения, определяющие тип данных, которые обычно содержатся в элементе управления, или дать инструкции по использованию элемента управления .

Событие Ввод возникает перед событием GotFocus . Событие Exit возникает перед событием LostFocus .

В отличие от событий GotFocus и LostFocus события ВВОД и Выход не возникают, когда форма получает или теряет фокус. Например, предположим, что вы установите флажок в форме, а затем щелкните отчет. При установке флажка возникают события ВВОД и GotFocus . При щелчке отчета возникает только событие LostFocus . Событие Exit не возникает (так как фокус перемещается в другое окно). Если снова установить флажок на форме, чтобы вывести ее на передний план, возникает событие GotFocus , но не событие ВВОД (так как элемент управления был фокусом, когда форма была последней активной). Событие Exit возникает только при щелчке другого элемента управления в форме.

При перемещении фокуса на элемент управления в форме, а у этого элемента управления нет фокуса на этой форме, события Exit и LostFocus для элемента управления, который имеет фокус на форме, происходят до событий ВВОД и GotFocus для элемента управления, на который вы перемещены.

Если вы используете мышь для перемещения фокуса с элемента управления в основной форме в элемент управления в подформе этой формы (элемент управления, который еще не имеет фокуса на подчиненную форму), возникают следующие события:

  • Выход (для элемента управления в основной форме)
  • LostFocus (для элемента управления в основной форме)
  • Введите (для элемента управления подчиненной формы)
  • Выход (для элемента управления в подчиненной форме, в которой был фокус)
  • LostFocus (для элемента управления в подчиненной форме, на которой был фокус)
  • Введите (для элемента управления в подчиненной форме, в которую переместился фокус)
  • GotFocus (для элемента управления в подчиненной форме, в которую переместился фокус)

Если элемент управления, к которому вы переходите в подчиненную форму, ранее был фокусирован, ни его событие ВВОД , ни событие GotFocus не возникает, но событие ВВОД для элемента управления подчиненной формы не возникает. При перемещении фокуса из элемента управления в подчиненную форму на элемент управления в основной форме события Exit и LostFocus для элемента управления в подчиненной форме не возникают, только событие Exit для элемента управления подчиненной формы и события ВВОД и GotFocus для элемента управления в основной форме.

Для перемещения фокуса на другой элемент управления часто используется мышь или клавиша, например TAB. Это приводит к возникновению событий мыши или клавиатуры в дополнение к событиям, описанным в этом разделе.

Пример

В следующем примере к текстовому поле LastName присоединяются две процедуры событий. Процедура события Ввод отображает сообщение с указанием типа данных, которые пользователь может ввести в текстовое поле. Процедура события Exit отображает диалоговое окно с запросом у пользователя, следует ли сохранить изменения, прежде чем фокус переместится на другой элемент управления. Если пользователь нажимает кнопку Отмена , аргумент Отмена имеет значение True (1), который перемещает фокус в текстовое поле без сохранения изменений. Если пользователь нажимает кнопку ОК , изменения сохраняются, а фокус перемещается на другой элемент управления.

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

Поддержка и обратная связь

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

Источник

EnterKey to press button in VBA Userform

I have a userform in Excel that asks for a username and password. Once you enter your password if you press Enter it just «selects» the next item which is the LogIn button, but it doesn’t press it. You have to hit Enter again to actually press the button.

How can I make it so when the user presses enter on his keyboard the LogIn button is pressed and the code associated to is runs ( Logincode_click )?

6 Answers 6

You could also use the TextBox’s On Key Press event handler:

Textbox1 is an example. Make sure you choose the textbox you want to refer to and also Logincode_Click is an example sub which you call (run) with this code. Make sure you refer to your preferred sub

Be sure to avoid «magic numbers» whenever possible, either by defining your own constants, or by using the built-in vbXXX constants.

In this instance we could use vbKeyReturn to indicate the enter key’s keycode (replacing YourInputControl and SubToBeCalled).

This prevents a whole category of compatibility issues and simple typos, especially because VBA capitalizes identifiers for us.

This one worked for me

Further to @Penn’s comment, and in case the link breaks, you can also achieve this by setting the Default property of the button to True (you can set this in the properties window, open by hitting F4 )

That way whenever Return is hit, VBA knows to activate the button’s click event. Similarly setting the Cancel property of a button to True would cause that button’s click event to run whenever ESC key is hit (useful for gracefully exiting the Userform)

Источник

TextBox.EnterKeyBehavior Property (Outlook Forms Script)

Возвращает или задает логическое значение, определяющее эффект нажатия клавиши ВВОД в TextBox. Для чтения и записи.

Синтаксис

expression. EnterKeyBehavior

Выражение Переменная, представляющая объект TextBox .

Замечания

True , если нажатие клавиши ВВОД создает новую строку, значение False при нажатии клавиши ВВОД перемещает фокус на следующий объект в порядке табуляции (по умолчанию).

Свойства EnterKeyBehavior и MultiLine тесно связаны. Значения, описанные выше, применимы, только если значение MultiLine равно True. Если значение MultiLine имеет значение False, нажатие клавиши ВВОД всегда перемещает фокус на следующий элемент управления в порядке табуляции независимо от значения EnterKeyBehavior.

Эффект нажатия клавиш CTRL+ВВОД также зависит от значения MultiLine. Если значение MultiLine имеет значение True, нажатие клавиш CTRL+ВВОД создает новую строку независимо от значения EnterKeyBehavior. Если значение MultiLine имеет значение False, нажатие клавиш CTRL+ВВОД не повлияет.

Поддержка и обратная связь

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

Источник

VBA Excel. Элемент управления TextBox (текстовое поле)

Элемент управления пользовательской формы TextBox в VBA Excel. Использование текстового поля для ввода и вывода информации, основные свойства, примеры. Привязка текстового поля к ячейке.

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

Текстовое поле незаменимо, когда необходимо заполнить пользовательскую форму новой информацией. Например, это может быть ФИО нового сотрудника и его паспортные данные, сумма выручки за день, новый электронный адрес и многое-многое другое.

Вводить информацию в TextBox на открытой форме можно не только с помощью клавиатуры, но и вставкой текста из буфера обмена. Когда текстовое поле применяется для ввода пароля, есть возможность отобразить все его знаки замещающим символом, например, звездочкой.

Свойства текстового поля

Свойство Описание
AutoSize* Автоподбор размера текстового поля. True – размер автоматически подстраивается под длину размещаемой строки. False – размер элемента управления определяется свойствами Width и Height.
AutoTab Включение автоматической табуляции – передачи фокуса следующему элементу управления при достижении максимального числа символов при значениях свойства MaxLenght > 0. True – автоматическая табуляция включена, False – выключена.
ControlSource Ссылка на источник данных для поля TextBox.
ControlTipText Текст всплывающей подсказки при наведении курсора на TextBox.
Enabled Возможность ввода, редактирования, копирования, вставки, удаления текста. True – все перечисленные опции включены, False – выключены (цвет текста в поле становится серым).
Font Шрифт, начертание и размер текста в поле.
Height Высота текстового поля.
Left Расстояние от левого края внутренней границы пользовательской формы до левого края текстового поля.
Locked Запрет ввода, редактирования, удаления текста. True – перечисленные опции запрещены (разрешено выделение и копирование текста), False – перечисленные опции разрешены.
MaxLenght Максимальная длина строки. По умолчанию – 0, что означает – ограничений нет.
Multiline Устанавливает многострочный (True) или однострочный (False) режим ввода-вывода текста.
PasswordChar Задает символ, который будет отображаться при вводе знаков пароля.
TabIndex Определяет позицию элемента управления в очереди на получение фокуса при табуляции, вызываемой свойством AutoTab или нажатием клавиш «Tab», «Enter». Отсчет начинается с 0.
Text** Текстовое содержимое (значение) поля (=Value).
TextAlign Выравнивание текста: 1 (fmTextAlignLeft) – по левому краю, 2 (fmTextAlignCenter) – по центру, 3 (fmTextAlignRight) – по правому краю.
Top Расстояние от верхнего края внутренней границы пользовательской формы до верхнего края текстового поля.
Value** Текстовое содержимое (значение) поля (=Text).
Visible Видимость текстового поля. True – TextBox отображается на пользовательской форме, False – TextBox скрыт.
Width Ширина текстового поля.
WordWrap Актуально при Multiline = True. Переход на новую строку при достижении границы текстового поля. True – переход включен, False – переход выключен.

* При использовании свойства AutoSize в значении True следует учитывать, что автоматическое изменение размеров поля при вводе текста может нарушить дизайн пользовательской формы.
** Text и Value — это два обозначения одного и того же свойства. Если в окне Properties элемента управления TextBox в поле свойства Text начать ввод строки, в поле Value ввод будет дублироваться. И наоборот, при вводе текста в поле свойства Value, дублирование произойдет в поле Text.

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

Свойства BackColor, BackStyle, BorderColor, BorderStyle отвечают за внешнее оформление текстового поля и его границ. Попробуйте выбирать доступные значения этих свойств в окне Properties, наблюдая за изменениями внешнего вида элемента управления TextBox на проекте пользовательской формы.

Привязка текстового поля к ячейке

Привязать элемент управления TextBox к ячейке на рабочем листе можно двумя способами.

1. В окне Properties элемента управления TextBox в поле свойства ControlSource необходимо указать адрес ячейки:

2. Присвоить свойству ControlSource адрес ячейки в коде VBA Excel:

Источник

Vba excel textbox по нажатию enter

Snake68 » 12.08.2004 (Чт) 0:34

Доброе время суток!
Честное слово, пытался, как всегда разобраться сам, но, потерпел грустное поражение.
Загвоздка, да и сам вопрос, состоит в следующем: как в элемент управления TextBox вставить «Enter»?!
Поясню: имеется форма, которая, при нажатии на некую кнопку, выбрасывает еще одну форму поверх себя. Последняя (дочерняя) форма модальна (или немодальна — всегда путался в этом! Короче, пока не закроешь верхнюю форму, доступа к нижней нет) по отношению к нижней. На нижней (материнской) форме расположен большой TextBox, наполнение которого происходит из дочерней формы путем нажатия неких кнопок. В зависимости от положений радио, чекбоксов и листбоксов, по нажатию на некие кнопки в TextBox на материнской форме пишутся некие записи.
Причем, записи эти не обновляются каждый раз, а дописываются в конец предыдущих записей. В идеале, результат, полученный в TextBox должен выглядеть так:

Запись 1
Запись 2
Запись 3
.
Запись N

Я перепробовал все известные мне способы, но, к сожалению. Короче, ничего не получилось! Записи пишутся в строчку! Я пробовал в основном такие построения:

form1.TextBox1.text = form1.TextBox1.text + » » + «5» + chr (13)

Вместо «+» я пользовался и «&», но результат тот же. Я добился только вставки крокозямбры, вместо перевода строки. Возможно я использую не тот chr, может надо не (13), хотя логика подсказывает, что дело не в этом. Пробовал я такое построение в VB, который идет вместе с МС Оффисом — там все работает как надо. Я просто на лист вставлял текстбокс и кнопку. Пробовал и на форме в Ворде — опять работает! Может библиотеку какую подключить надо?! Так, вроде, одинаковые стоят.
Почему мне нужно использовать именно TextBox? Потому что результат полученный в нем мне нужно будет в именно таком виде скопировать в другую программу, документ и проч. Я взял TextBox, как наиболее доступный, понятный и простой элемент. А потом выяснилось, что я ошибся:-(
Я был бы очень Вам благодарен, если бы Вы смогли прояснить для меня
создавшуюся ситуацию или, даже, сказать как вставить перевод строки в
проклятый TextBox.

Заранее Вам большое спасибо за будущую возможную помощь.

Источник

Выход из TextBox клавишей Enter

Xpert

Дата: Пятница, 14.12.2018, 12:19 |
Сообщение № 1

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 103


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

Всем привет!
Подскажите, пожалуйста, как сделать так, чтобы после ввода значения в поле TextBox и нажатия клавиши enter, поле текстбокса становилось бы неактивным?
У меня получается выйти только клавишей esc…

 

Ответить

Ответить

Апострофф

Дата: Пятница, 14.12.2018, 22:52 |
Сообщение № 3

Группа: Проверенные

Ранг: Обитатель

Сообщений: 416


Репутация:

117

±

Замечаний:
0% ±


Excel 1997

Xpert, для того чтобы поле стало неактивным, надо передать фокус на другой контрол.
Enter, как и Tab, именно это и делает.
Не понятно — в чём у вас проблема?

 

Ответить

StoTisteg

Дата: Суббота, 15.12.2018, 23:54 |
Сообщение № 4

Группа: Авторы

Ранг: Старожил

Сообщений: 1161


Репутация:

103

±

Замечаний:
0% ±


Excel 2010

Если я правильно понял, нужно назначить ему свойство Enabled=False. Тогда курить события KeyUp и KeyDown, примеры применения — тут


Интуитивно понятный код — это когда интуитивно понятно, что это код.

 

Ответить

Xpert

Дата: Понедельник, 17.12.2018, 19:27 |
Сообщение № 5

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 103


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

Дамы и господа!
Прилагаю файл.

К сообщению приложен файл:

8093868.xlsm
(12.4 Kb)

 

Ответить

RAN

Дата: Понедельник, 17.12.2018, 19:58 |
Сообщение № 6

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

[vba]

Код

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = vbKeyReturn Then ActiveSheet.Range(TextBox1.LinkedCell).Select
End Sub

[/vba]


Быть или не быть, вот в чем загвоздка!

 

Ответить

  • Remove From My Forums
  • Question

  • Hello

    I am trying to make few userforms in EXCEL VBA.

    I have 10 userforms and on every forms there are few textboxes. I wonder if somebody help me with coding and explanation of the following.

    on starting the macro, userform1 should come up, and

    if user puts 2 in textbox1 on userform1,and press ENTER(while curser still in textbox1),then only, userform1 should unload and userform2 should show.

    if user puts 3 in textbox1 on userform1,and press ENTER(while curser still in textbox1),then only, userform1 should unload and userform3 should show.

    and so on……………….

     and then on any form if user presses F2 key, the current form should unload and previous form should come up.

    thanks a lot for help.

Answers

  • Here is a possible hint.

    1. For your macro to show the form use

    UserForm1.Show

    2. To move to another form / previous form etc, use the Keydown event of particular textboxes. The following code will close the current form and open the UserForm2 if the user presses Enter key

    Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)  
        If KeyCode = 13 Then 
            If TextBox1.Text = 2 Then 
                Unload Me 
                UserForm2.Show  
            End If 
        End If 
    End Sub 

    Hope it helps

    Cheers

    Shasur


    http://www.vbadud.blogspot.com

    • Marked as answer by

      Monday, February 2, 2009 9:37 AM

Элемент управления пользовательской формы TextBox в VBA Excel. Использование текстового поля для ввода и вывода информации, основные свойства, примеры. Привязка текстового поля к ячейке.

UserForm.TextBox – это элемент управления пользовательской формы, предназначенный для ввода, редактирования и вывода информации в текстовом формате.

Текстовое поле на пользовательской форме

Текстовое поле незаменимо, когда необходимо заполнить пользовательскую форму новой информацией. Например, это может быть ФИО нового сотрудника и его паспортные данные, сумма выручки за день, новый электронный адрес и многое-многое другое.

Если с помощью текстового поля требуется вводить заранее известную информацию, элементы которой можно сгруппировать в список, то в этом случае удобнее вместо элемента управления TextBox использовать ListBox или ComboBox.

Вводить информацию в TextBox на открытой форме можно не только с помощью клавиатуры, но и вставкой текста из буфера обмена. Когда текстовое поле применяется для ввода пароля, есть возможность отобразить все его знаки замещающим символом, например, звездочкой.

Иногда, если на пользовательской форме используется только одно текстовое поле и кнопка «OK» (или кнопки «OK» и «Отмена»), для ввода информации такую форму можно заменить функцией InputBox, а для вывода информации, когда не требуется редактирование отображаемого текста, – функцией MsgBox.

Свойства текстового поля

Свойство Описание
AutoSize* Автоподбор размера текстового поля. True – размер автоматически подстраивается под длину размещаемой строки. False – размер элемента управления определяется свойствами Width и Height.
AutoTab Включение автоматической табуляции – передачи фокуса следующему элементу управления при достижении максимального числа символов при значениях свойства MaxLenght > 0. True – автоматическая табуляция включена, False – выключена.
ControlSource Ссылка на источник данных для поля TextBox.
ControlTipText Текст всплывающей подсказки при наведении курсора на TextBox.
Enabled Возможность ввода, редактирования, копирования, вставки, удаления текста. True – все перечисленные опции включены, False – выключены (цвет текста в поле становится серым).
Font Шрифт, начертание и размер текста в поле.
Height Высота текстового поля.
Left Расстояние от левого края внутренней границы пользовательской формы до левого края текстового поля.
Locked Запрет ввода, редактирования, удаления текста. True – перечисленные опции запрещены (разрешено выделение и копирование текста), False – перечисленные опции разрешены.
MaxLenght Максимальная длина строки. По умолчанию – 0, что означает – ограничений нет.
Multiline Устанавливает многострочный (True) или однострочный (False) режим ввода-вывода текста.
PasswordChar Задает символ, который будет отображаться при вводе знаков пароля.
TabIndex Определяет позицию элемента управления в очереди на получение фокуса при табуляции, вызываемой свойством AutoTab или нажатием клавиш «Tab», «Enter». Отсчет начинается с 0.
Text** Текстовое содержимое (значение) поля (=Value).
TextAlign Выравнивание текста: 1 (fmTextAlignLeft) – по левому краю, 2 (fmTextAlignCenter) – по центру, 3 (fmTextAlignRight) – по правому краю.
Top Расстояние от верхнего края внутренней границы пользовательской формы до верхнего края текстового поля.
Value** Текстовое содержимое (значение) поля (=Text).
Visible Видимость текстового поля. True – TextBox отображается на пользовательской форме, False – TextBox скрыт.
Width Ширина текстового поля.
WordWrap Актуально при Multiline = True. Переход на новую строку при достижении границы текстового поля. True – переход включен, False – переход выключен.

* При использовании свойства AutoSize в значении True следует учитывать, что автоматическое изменение размеров поля при вводе текста может нарушить дизайн пользовательской формы.
** Text и Value — это два обозначения одного и того же свойства. Если в окне Properties элемента управления TextBox в поле свойства Text начать ввод строки, в поле Value ввод будет дублироваться. И наоборот, при вводе текста в поле свойства Value, дублирование произойдет в поле Text.

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

Свойства BackColor, BackStyle, BorderColor, BorderStyle отвечают за внешнее оформление текстового поля и его границ. Попробуйте выбирать доступные значения этих свойств в окне Properties, наблюдая за изменениями внешнего вида элемента управления TextBox на проекте пользовательской формы.

Привязка текстового поля к ячейке

Привязать элемент управления TextBox к ячейке на рабочем листе можно двумя способами.

1. В окне Properties элемента управления TextBox в поле свойства ControlSource необходимо указать адрес ячейки:

Окно Properties-TextBox

2. Присвоить свойству ControlSource адрес ячейки в коде VBA Excel:

UserForm1.TextBox1.ControlSource = «C5»

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

Чтобы наглядно ознакомиться с взаимозависимостью значения ячейки C5 и содержимого текстового поля, разместите на пользовательской форме еще какой-нибудь элемент управления и откройте ее в немодальном* окне:

Sub Test()

UserForm1.TextBox1.ControlSource = «C5»

UserForm1.Show 0

End Sub

Измените значение ячейки C5 и нажмите клавишу «Tab» или «Enter» – изменения будут продублированы в текстовом поле на форме. Измените содержимое поля TextBox1, нажмите клавишу «Tab» или «Enter», передав фокус другому элементу управления, – изменения продублируются в ячейке C5.

Чтобы привязать текстовое поле к ячейке неактивного листа, необходимо в адресе указать имя листа по ярлыку с разделителем «!»:

UserForm1.TextBox1.ControlSource = «Лист2!A3»

Если имя листа содержит пробел, заключите его в одинарные кавычки:

UserForm1.TextBox1.ControlSource = «‘Мой лист’!B6»

Точно также адрес ячейки конкретного листа можно указать непосредственно в окне Properties элемента управления TextBox в поле свойства ControlSource (без парных кавычек).

* Отображение пользовательской формы в немодальном окне позволяет редактировать ячейки на рабочем листе Excel, не закрывая форму.

Примеры использования TextBox

Пример 1
Обмен содержимым между текстовым полем, переменной и ячейкой на рабочем листе:

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

‘ячейки A2 и переменной a1

UserForm1.TextBox1.Text = Range(«A2»)

UserForm1.TextBox1.Text = a1

‘Присвоение ячейке B3 и переменной a2

‘значения текстового поля

Cells(3, 2) = UserForm1.TextBox1.Text

a2 = UserForm1.TextBox1.Value

‘Свойства Text и Value элемента

‘управления TextBox равнозначны

Пример 2
Программное создание элемента управления TextBox, размещение его по центру пользовательской формы, добавление всплывающей подсказки и текста по умолчанию.

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

Создаем новую пользовательскую форму с именем UserForm2. Если у вас другое имя формы, это не имеет значения, так как обращаться к ней будем с помощью ключевого слова «Me». Открываем модуль созданной формы и вставляем в него следующий код VBA Excel:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

Private Sub UserForm_Initialize()

Dim myTextBox As Control

‘Создаем новый TextBox и присваиваем его переменной

Set myTextBox = Me.Controls.Add(«Forms.TextBox.1»)

‘Задаем размеры и заголовок пользовательской формы

With Me

  .Height = 100

  .Width = 220

  .Caption = «Форма №2»

End With

‘Присваиваем значения свойствам текстового поля

With myTextBox

  .Width = 100

  .Height = 20

  ‘Left и Top рассчитаны для Excel 2016*

  .Left = 60 5

  .Top = 40 15

  ‘Добавляем всплывающую подсказку

  .ControlTipText = «Введите дату подписания договора»

  ‘Вставляем в поле текущую дату

  .Text = Format(Now, «DD.MM.YYYY»)

  ‘Выравниваем текст по центру

  .TextAlign = 2

End With

End Sub

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

TextBox с всплывающей подсказкой

* Значения свойств Left и Top рассчитаны для Excel 2016. Вычитаемые числа зависят от толщины границ пользовательской формы, которые в других версиях Excel могут отличаться.

Понравилась статья? Поделить с друзьями:
  • Excel vba text color
  • Excel vba workbook open method
  • Excel vba workbook names
  • Excel vba text and value
  • Excel vba workbook methods