Страницы: 1
RSS
Стереть содержимое активного TextBox кнопкой
 
Добрый вечер всем !

Вопрос такой:
Почему при активном курсоре в TextBox формы не работают Application.SendKeys ?
Код
Private Sub CommandButton1_Click()
'https://vremya-ne-zhdet.ru/vba-excel/operator-sendkeys/
Application.SendKeys "^a" 'выделить содержимое TextBox по Ctrl+A
Application.SendKeys "{DELETE}" 'удалить выделенное клавишей DELETE
End Sub
При этом с физических клавиш клавиатуры все нормально работает, а при использовании Application.SendKeys не работает.

Попробовал обходной путь:
Сначала назначить клавишу на выполнение действия и потом применить Application.SendKeys
Допустим назначаем клавишу ENTER на выполнение действия
Код
'https://excelvba.ru/articles/KeyCode
'Keycode for "Enter" is 13
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 Then
      TextBox1.Text = "rrrrrrrrrrryyy"
    End If
End Sub
Все работает по ENTER физической клавишей в TextBox1
Потом применяем Application.SendKeys
Код
Private Sub CommandButton1_Click()
Application.SendKeys "{ENTER}"
End Sub
Не заработал  Application.SendKeys в UserForm - почему так ?
 
а с чего вы взяли, что посланный CommandButton1 SendKeys получит TextBox1???
его получит ваша форма (если она модальная) с чего вдруг форма отправит SendKeys в TextBox1, а не какому-то другому контролу формы?

когда перепробовали все и начали впадать в отчаяние только тогда можно обратиться к SendKeys, а пока есть более надежные способы - пользуйтесь ими.
и...
не плохо бы рассказать не о SendKeys, а о том, какую задачу вы решаете?
Изменено: Ігор Гончаренко - 30.05.2021 02:11:26
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Код
Private Sub CommandButton1_Click()
     TextBox1.Text = ""
End Sub
А к чему танцы с бубном?
 
На форме 10 шт ТextBox - кнопкой CommandButton1 нужно стереть содержимое активного TextBox (там где находится курсор).
Те сначала както пройтись по всем TextBox и определить какой активный - потом только стереть содержимое.
Но как найти активный TextBox ?
 
когда вы нажали кнопку на форме, активной стала кнопка и активного ТекстБокса в этот момент нет! и искать его бесполезно
Изменено: Ігор Гончаренко - 30.05.2021 09:31:01
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Понял  - спасибо за ответ !
 
Цитата
ivan2013 написал:
На форме 10 шт ТextBox - кнопкой CommandButton1 нужно стереть содержимое активного TextBox (там где находится курсор).
Это же так просто...

V стереть содержимое активного TextBox кнопкой
Изменено: RAN - 30.05.2021 12:01:53
Страницы: 1
Наверх