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
)?
ZygD
21k39 gold badges77 silver badges98 bronze badges
asked Oct 1, 2013 at 20:24
2
You could also use the TextBox’s On Key Press event handler:
'Keycode for "Enter" is 13
Private Sub TextBox1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 Then
Logincode_Click
End If
End Sub
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
answered Oct 1, 2013 at 21:56
Jacob DJacob D
2192 silver badges5 bronze badges
9
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).
Private Sub YourInputControl_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyReturn Then
SubToBeCalled
End If
End Sub
This prevents a whole category of compatibility issues and simple typos, especially because VBA capitalizes identifiers for us.
Cheers!
answered Jun 29, 2015 at 20:28
drognisepdrognisep
5491 gold badge7 silver badges16 bronze badges
3
This one worked for me
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
Button1_Click
End If
End Sub
answered Sep 9, 2014 at 13:35
PepysPepys
9817 gold badges16 silver badges34 bronze badges
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)
Source: Olivier Jacot-Descombes’s answer accessible here https://stackoverflow.com/a/22793040/6609896
answered Mar 22, 2017 at 12:51
GreedoGreedo
4,7892 gold badges29 silver badges76 bronze badges
Use the TextBox’s Exit
event handler:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Logincode_Click
End Sub
answered Oct 1, 2013 at 21:11
David ZemensDavid Zemens
52.8k11 gold badges79 silver badges129 bronze badges
5
Here you can simply use:
SendKeys "{ENTER}"
at the end of code linked to the Username field.
And so you can skip pressing ENTER Key once (one time).
And as a result, the next button («Log In» button here) will be activated. And when you press ENTER once (your desired outcome), It will run code which is linked with «Log In» button.
answered Aug 28, 2017 at 8:35
Содержание
- Событие TextBox.Enter (Access)
- Синтаксис
- Замечания
- Пример
- Поддержка и обратная связь
- EnterKey to press button in VBA Userform
- 6 Answers 6
- TextBox.EnterKeyBehavior Property (Outlook Forms Script)
- Синтаксис
- Замечания
- Поддержка и обратная связь
- VBA Excel. Элемент управления TextBox (текстовое поле)
- Элемент управления TextBox
- Свойства текстового поля
- Привязка текстового поля к ячейке
- 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.
Заранее Вам большое спасибо за будущую возможную помощь.
Источник
Punker Пользователь Сообщений: 429 |
Доброго всем времени суток. Private Sub ButtonOK_Click() |
kaa Пользователь Сообщений: 508 |
попробуйте при инициализации формы ввести |
Punker Пользователь Сообщений: 429 |
{quote}{login=kaa}{date=07.10.2008 05:15}{thema=}{post}попробуйте при инициализации формы ввести Не помогло. Форма раскрывающаяся. Для редактирования нажимается кнопка на форме «Редактирование» и форма увеличивается в размере вниз и появляется поле для ввода пароля. |
kaa Пользователь Сообщений: 508 |
хм… |
Может быть так: Private Sub ButtonOK_Click() |
|
Меня научили вот так: Если у Вас CommandButton1_Click это «ОК», то |
|
Punker Пользователь Сообщений: 429 |
Да спасибо, с кодом Юрия заработало, но не совсем так как хотелось бы. Теперь после ввода правильного пароля все так как должно быть. А вот если пароль был введен не правильно, появляется сообщение о неправильно введенном пароле и по моей задумке тест бокс для ввода должен очищаться и форма остается на экране для второй попытки, по после нажатия ОК на сообщении о неправильном пароле форма закрывается. Как это поправить? Private Sub UserForm_Initialize() Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) Нажатие кнопки редактирования. Нажатие кнопки ОК после ввода пароля. |
kaa Пользователь Сообщений: 508 |
я выкладывал файл. там реализавано то, что ты хочешь |
Давйте ваш фал с формой — посмотрим. Не рисовать же самому неизвестно что |
|
Punker Пользователь Сообщений: 429 |
Файл с формой. Пароль на все 123 |
kaa Пользователь Сообщений: 508 |
|
Punker Пользователь Сообщений: 429 |
Ну не работает: вводим неправильный пароль нажимаем энтер и форма закрывается без всяких сообщений. |
kaa Пользователь Сообщений: 508 |
|
kaa Пользователь Сообщений: 508 |
вот. вставил твой код в свою форму — все заработало. чудеса… |
Если пароль 123 верный, то почему все время MsgBox талдычит, что пароль НЕВЕРНЫЙ? |
|
kaa Пользователь Сообщений: 508 |
а если в код глянуть? видно я на «1» поменял…. |
Punker Пользователь Сообщений: 429 |
kaa может я тупой, но все же. В Вашем файле все работает. |
kaa Пользователь Сообщений: 508 |
я же говорю — чудеса. это не я, это, скорее всго, вы что-нить поменяли, потому что я брал «новые» объекты. |
Punker Пользователь Сообщений: 429 |
#20 13.10.2008 17:17:46 Да, спасибо каа я нашел, у меня в параметре кнопок формы стоял Default True, а у Вас False, я поменял и все работает! Ура! |
1 Answer
Try do it in Workbook_open event
Private Sub Workbook_Open()
Application.OnKey "{ENTER}", "MyEnterEvent"
End Sub
Sub MyEnterEvent
' codes here
End Sub
To end Macro
Application.OnKey "{ENTER}"
answered Jun 30, 2013 at 3:53
matzonematzone
2021 silver badge4 bronze badges
3
-
Thank you! It didn’t work at first, but I played around and got this:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Application.OnKey "~", "MyEnterEvent" End Sub
Jun 30, 2013 at 7:14
-
It should be unnecessary to keep re-assigning this key-event every time the selection changes. Obviously, I’m not aware of what your code actually does, but perhaps this key assignment could be made, and removed, on the sheet’s
Activate
andDeactivate
events.Jun 30, 2013 at 16:50
-
@AndyG .. thanx for your correction ..
Jun 30, 2013 at 17:03
To check the KeyPress event of «Enter» in user form.
A KeyPress event does not occur under the following conditions:
Pressing TAB.
Pressing ENTER.
Pressing an arrow key.
When a keystroke causes the focus to move from one control to another.
Therefore, if we would like to use an event Enter in Excel VBA, we should do as in the followings
—————————————————————————————
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then ‘we can use either 13 or vbKeyReturn
MsgBox «This messagebox will show after press Enter!»
End If
End Sub
—————————————————————————————
Below code is not working in Excel VBA
—————————————————————————————
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 13 Then
MsgBox «This procedure is not work for checking Enter event in Excel VBA!»
End If
End Sub
—————————————————————————————