Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > очистка по esc


Автор: llrr4343 4.12.2007, 16:38
подскажите плиз такую фичу: есть форма, на ней 2 текстбокса, естественно туда что-то пишется, бекспейс нажимать и еще выбирать 2 текст бокс это оч медленно, 
как сделать чтобы при нажатии ESC они очищались, при чем не важно где фокус на форме, текстбоксе, какой-то кнопке, главное форма активная -> ESC -> оба тексбокса чистые?

Автор: kapbepucm 4.12.2007, 16:54
Код
Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  If KeyCode = 27 Then
  '...
  End If
End Sub
Это сделать для всех контролов.

Автор: llrr4343 4.12.2007, 17:14
может я че не так делаю но этот код не работает, 
прикрепляю personal.xls

Автор: llrr4343 4.12.2007, 18:06
и что значит для всех контролов?

Автор: Дмит 4.12.2007, 21:32
Сделай на форме кнопку (свойство Cancel=True) и в её коде очищай поля.
Кнопка может быть и спрятана.

Автор: kapbepucm 4.12.2007, 22:09
Цитата(llrr4343 @  4.12.2007,  18:06 Найти цитируемый пост)
и что значит для всех контролов?
В смысле в каждом контроле в событии OnKeyDown запускать процедуру UserForm_KeyDown, если, конечно, нажато [Esc]

Автор: llrr4343 5.12.2007, 10:03
прописал в каждом контроле KeyDown, все стало намного лучше, токо появился другой косяк:
если курсор стоит в текстбоксе, и нажимаешь esc, то текст в текстбоксе на мгновение исчезает и и снова появляется   smile  если построчно прогу компилировать, то vba делает все как надо токо после строки end sub все возвращается на круги своя   smile 

Автор: RockClimber 5.12.2007, 12:18
llrr4343, можешь последнюю версию кода опубликовать?

Автор: kapbepucm 5.12.2007, 12:50
llrr4343, допиши стирание
Код
  TextBox2.SetFocus
  TextBox1.Value = ""
  TextBox1.SetFocus
  TextBox2.Value = ""

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)