Консультация № 170529
18.07.2009, 00:32
0.00 руб.
0 2 1
Доброго времени суток! Вопрос по VBA Exel.
На форме имеются несколько элементов TextBox. Порядок перемещения по поляv определен (Tab Order). После введения значения в поле, при нажатии на кнопку TAB вместо перемещенитя фокуса ввода на очередной элемент происходит добавление пробелов к значению в поле TextBox. Не пойму в чем дело.
Хотелось бы чтобы перемещение по элементам происходило как при нажатии клавиши TAB так и при нажатии клавиши со стрелками и при этом, если в поле уже есть значение, оно должно стать выделенным. (т.е. при вводе нового значения не нужно было выделять имеющееся значение при помощи мыши, а потом вводить новое значение)

Обсуждение

Неизвестный
18.07.2009, 00:44
общий
это ответ
Здравствуйте, fomservl!
Вы вероятно случайно установили свойство TabKeyBehavior в значение True. Это как раз и значит, что поле принимает ввод символов табуляции.
С табуляцией у текстового поля связано три парамера:
TabIndex — определяет порядковый номер элемента при переходе между элементами с помощью клавиши Tab
TabKeyBehavior — указывает, что нужно делать при нажатии клавиши Tab, когда курсор находится в поле. Если установлено значение False, то переходит к следующему компоненту, если True — то печатает символ табуляции.
TabStop — флаг который указывает следует ли пропускать это поле при переходе по клавише Tab.
5
Спасибо большое! Сработало!<br>А можно сделать так, чтобы при нажатии, допутим на стрелку вниз происходило тоже самое, что и при нажатии на кнопку TAB.
Неизвестный
18.07.2009, 07:24
общий
Можно. Для этого нужно описать, событие, которое происходит при нажатии клавиши клавиатуры
Код:
Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
KeyCode = IIf(KeyCode = 40, 9, KeyCode)
End Sub

Эта процедура выполняется, когда пользователь нажимает клавишу клавиатуры. Если код этой клавиши равен 40 (стрелка вниз), то мы его заменяем на код клавиши табуляции (9)
У процедуры два параметра: KeyCode — код нажатой клавиши, и Shift — флаг, который указывает была ли при этом нажата клавиша Ctrl, Shift или Alt.

Хочу заметить, что при нажатии на клавишу клавиатуры выполняются три события: KeyDown (нажатие клавиши), KeyPress (удержание клавиши) и KeyUp (отпускание клавиши)
Форма ответа