Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Перехват сочетаний клавиш в Форме. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Перехват сочетаний клавиш в Форме. (Макросы/Sub)
Перехват сочетаний клавиш в Форме.
Cere6ellum Дата: Четверг, 02.03.2017, 15:01 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
Несколько дней пытаюсь реализовать перехват сочетания Ctrl+C.
Форма содержит TextBox и несколько кнопок.
У одной из кнопок свойство Default установлено в True. Enter уже не прокатит.

Клик мышью по "проблемной" кнопке копирует всё из TextBox.

То есть, нажав сочетание вышеупомянутых клавиш необходимо имитировать клик по кнопке формы.

Копать нужно сюда, наверно:
[vba]
Код

Private Sub WorkBook_Open()
    Application.OnKey "^c", "MyMacro"
End Sub

Private Sub MyMacro()
    MsgBox "AAAAAAAAA"
End Sub
[/vba]

Но концепцию продумать не получается.
Как привязать вызов макроса к кнопке формы?
 
Ответить
СообщениеДобрый день.
Несколько дней пытаюсь реализовать перехват сочетания Ctrl+C.
Форма содержит TextBox и несколько кнопок.
У одной из кнопок свойство Default установлено в True. Enter уже не прокатит.

Клик мышью по "проблемной" кнопке копирует всё из TextBox.

То есть, нажав сочетание вышеупомянутых клавиш необходимо имитировать клик по кнопке формы.

Копать нужно сюда, наверно:
[vba]
Код

Private Sub WorkBook_Open()
    Application.OnKey "^c", "MyMacro"
End Sub

Private Sub MyMacro()
    MsgBox "AAAAAAAAA"
End Sub
[/vba]

Но концепцию продумать не получается.
Как привязать вызов макроса к кнопке формы?

Автор - Cere6ellum
Дата добавления - 02.03.2017 в 15:01
K-SerJC Дата: Пятница, 03.03.2017, 07:31 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 487
Репутация: 86 ±
Замечаний: 0% ±

Excel 2013
Как привязать вызов макроса к кнопке формы?

так?
[vba]
Код
Private Sub WorkBook_Open()
    Application.OnKey "^c", "MyMacro"
End Sub

Private Sub MyMacro()
      Commandbutton1_click()
      MsgBox "AAAAAAAAA"
End Sub
[/vba]
в вашем коде который определяет на запуск по горячей клавише, назначаете запуск процедуры по клику на кнопке

или на всех элементах формы, которые могут быть в фокусе использовать событие KeyPress
[vba]
Код
Private Sub TextBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Debug.Print KeyCode
Debug.Print Shift
End Sub
[/vba]


Благими намерениями выстелена дорога в АД.

Сообщение отредактировал K-SerJC - Пятница, 03.03.2017, 07:42
 
Ответить
Сообщение
Как привязать вызов макроса к кнопке формы?

так?
[vba]
Код
Private Sub WorkBook_Open()
    Application.OnKey "^c", "MyMacro"
End Sub

Private Sub MyMacro()
      Commandbutton1_click()
      MsgBox "AAAAAAAAA"
End Sub
[/vba]
в вашем коде который определяет на запуск по горячей клавише, назначаете запуск процедуры по клику на кнопке

или на всех элементах формы, которые могут быть в фокусе использовать событие KeyPress
[vba]
Код
Private Sub TextBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Debug.Print KeyCode
Debug.Print Shift
End Sub
[/vba]

Автор - K-SerJC
Дата добавления - 03.03.2017 в 07:31
Cere6ellum Дата: Пятница, 03.03.2017, 10:08 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Не особо понял.

Сначала определяю перехват:
[vba]
Код

Private Sub WorkBook_Open()
    Application.OnKey "^c", "MyMacro"
End Sub
[/vba]

После, описываю метод при нажатиии клавиш Ctrl+C в модуле формы:
[vba]
Код

Private Sub MyMacro()
    Commandbutton1_click()
    MsgBox "AAAAAAAAA"
End Sub
[/vba]

После, прописываю метод для TextBox, из которого нужно скопировать данные при нажатии Ctrl+C.:
[vba]
Код

Private Sub TextBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Debug.Print KeyCode
Debug.Print Shift
End Sub
[/vba]
Причём, копирование должно происходить как и митация нажития кнопки в форме.

Всё правильно описал?
Не работает такой подход.
Чувствую, чего-то не понимаю...
 
Ответить
СообщениеНе особо понял.

Сначала определяю перехват:
[vba]
Код

Private Sub WorkBook_Open()
    Application.OnKey "^c", "MyMacro"
End Sub
[/vba]

После, описываю метод при нажатиии клавиш Ctrl+C в модуле формы:
[vba]
Код

Private Sub MyMacro()
    Commandbutton1_click()
    MsgBox "AAAAAAAAA"
End Sub
[/vba]

После, прописываю метод для TextBox, из которого нужно скопировать данные при нажатии Ctrl+C.:
[vba]
Код

Private Sub TextBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Debug.Print KeyCode
Debug.Print Shift
End Sub
[/vba]
Причём, копирование должно происходить как и митация нажития кнопки в форме.

Всё правильно описал?
Не работает такой подход.
Чувствую, чего-то не понимаю...

Автор - Cere6ellum
Дата добавления - 03.03.2017 в 10:08
K-SerJC Дата: Пятница, 03.03.2017, 11:31 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 487
Репутация: 86 ±
Замечаний: 0% ±

Excel 2013
определяете перехват, на ваш макрос
определяете что делать при клике на кнопку
при этом клик на кнопке у вас описан в процедуре событие
типа такого, от названия кнопки зависит:
[vba]
Код
Private Sub Commandbutton1_click()
[/vba]
в вашем макросе указываете эту процедуру должно работать...

[vba]
Код
Private Sub TextBox3_KeyDown
[/vba]
срабатывает когда у вас запущена форма и нажаты любые клавиши, когда фокус на TextBox3
тут надо прописать определение какие клавишы были нажаты и если нужные, то запустить вашу процедуру

свой пример можете приложить?


Благими намерениями выстелена дорога в АД.

Сообщение отредактировал K-SerJC - Пятница, 03.03.2017, 11:45
 
Ответить
Сообщениеопределяете перехват, на ваш макрос
определяете что делать при клике на кнопку
при этом клик на кнопке у вас описан в процедуре событие
типа такого, от названия кнопки зависит:
[vba]
Код
Private Sub Commandbutton1_click()
[/vba]
в вашем макросе указываете эту процедуру должно работать...

[vba]
Код
Private Sub TextBox3_KeyDown
[/vba]
срабатывает когда у вас запущена форма и нажаты любые клавиши, когда фокус на TextBox3
тут надо прописать определение какие клавишы были нажаты и если нужные, то запустить вашу процедуру

свой пример можете приложить?

Автор - K-SerJC
Дата добавления - 03.03.2017 в 11:31
Cere6ellum Дата: Пятница, 03.03.2017, 12:43 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Во вложении.
К сообщению приложен файл: Example.xlsm (29.8 Kb)
 
Ответить
СообщениеВо вложении.

Автор - Cere6ellum
Дата добавления - 03.03.2017 в 12:43
Cere6ellum Дата: Суббота, 04.03.2017, 12:09 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Не было возможности глянуть мой файл?
 
Ответить
СообщениеНе было возможности глянуть мой файл?

Автор - Cere6ellum
Дата добавления - 04.03.2017 в 12:09
K-SerJC Дата: Понедельник, 06.03.2017, 07:26 | Сообщение № 7
Группа: Проверенные
Ранг: Обитатель
Сообщений: 487
Репутация: 86 ±
Замечаний: 0% ±

Excel 2013
Не было возможности глянуть мой файл?

да.

вот так вроде работает:
[vba]
Код
Private Sub msgTextBox_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 67 And Shift = 2 Then CopyButton_Click Else Exit Sub
End Sub
[/vba]
К сообщению приложен файл: Cere6ellum.xlsm (28.3 Kb)


Благими намерениями выстелена дорога в АД.
 
Ответить
Сообщение
Не было возможности глянуть мой файл?

да.

вот так вроде работает:
[vba]
Код
Private Sub msgTextBox_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 67 And Shift = 2 Then CopyButton_Click Else Exit Sub
End Sub
[/vba]

Автор - K-SerJC
Дата добавления - 06.03.2017 в 07:26
Cere6ellum Дата: Понедельник, 06.03.2017, 09:17 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Почему-то не работает.
Жму Ctrl+c. Ноль эмоций.

Как отловить ошибку?
 
Ответить
СообщениеПочему-то не работает.
Жму Ctrl+c. Ноль эмоций.

Как отловить ошибку?

Автор - Cere6ellum
Дата добавления - 06.03.2017 в 09:17
Cere6ellum Дата: Понедельник, 06.03.2017, 11:02 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Вообщем повесил на действие для первой кнопки переключение фокуса на вторую.
Просто 2 раза Enter нужно нажимать теперь.
Спасибо, в любом случае.
 
Ответить
СообщениеВообщем повесил на действие для первой кнопки переключение фокуса на вторую.
Просто 2 раза Enter нужно нажимать теперь.
Спасибо, в любом случае.

Автор - Cere6ellum
Дата добавления - 06.03.2017 в 11:02
K-SerJC Дата: Вторник, 07.03.2017, 07:33 | Сообщение № 10
Группа: Проверенные
Ранг: Обитатель
Сообщений: 487
Репутация: 86 ±
Замечаний: 0% ±

Excel 2013
Вообщем повесил на действие для первой кнопки переключение фокуса на вторую.
Просто 2 раза Enter нужно нажимать теперь.
Спасибо, в любом случае.

попробуйте во всех элементах формы на KeyUP прописать:

[vba]
Код
If KeyCode = 67 And Shift = 2 Then CopyButton_Click Else Exit Sub
[/vba]

а не только для msgTextBox


Благими намерениями выстелена дорога в АД.

Сообщение отредактировал K-SerJC - Вторник, 07.03.2017, 07:37
 
Ответить
Сообщение
Вообщем повесил на действие для первой кнопки переключение фокуса на вторую.
Просто 2 раза Enter нужно нажимать теперь.
Спасибо, в любом случае.

попробуйте во всех элементах формы на KeyUP прописать:

[vba]
Код
If KeyCode = 67 And Shift = 2 Then CopyButton_Click Else Exit Sub
[/vba]

а не только для msgTextBox

Автор - K-SerJC
Дата добавления - 07.03.2017 в 07:33
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Перехват сочетаний клавиш в Форме. (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!