Перехват сочетаний клавиш в Форме.
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
Ответить
Сообщение Добрый день. Несколько дней пытаюсь реализовать перехват сочетания 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]
Как привязать вызов макроса к кнопке формы?
так? [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
Благими намерениями выстелена дорога в АД.
Сообщение отредактировал 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
Ответить
Сообщение Не особо понял. Сначала определяю перехват: [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 тут надо прописать определение какие клавишы были нажаты и если нужные, то запустить вашу процедуру свой пример можете приложить?
определяете перехват, на ваш макрос определяете что делать при клике на кнопку при этом клик на кнопке у вас описан в процедуре событие типа такого, от названия кнопки зависит: [vba]Код
Private Sub Commandbutton1_click()
[/vba] в вашем макросе указываете эту процедуру должно работать... [vba]Код
Private Sub TextBox3_KeyDown
[/vba] срабатывает когда у вас запущена форма и нажаты любые клавиши, когда фокус на TextBox3 тут надо прописать определение какие клавишы были нажаты и если нужные, то запустить вашу процедуру свой пример можете приложить? K-SerJC
Благими намерениями выстелена дорога в АД.
Сообщение отредактировал 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
Во вложении.
Ответить
Сообщение Во вложении. Автор - 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]
Не было возможности глянуть мой файл?
да. вот так вроде работает: [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
Благими намерениями выстелена дорога в АД.
Ответить
Сообщение Не было возможности глянуть мой файл?
да. вот так вроде работает: [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
Ответить
Сообщение Почему-то не работает. Жму 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
Ответить
Сообщение Вообщем повесил на действие для первой кнопки переключение фокуса на вторую. Просто 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
Вообщем повесил на действие для первой кнопки переключение фокуса на вторую. Просто 2 раза Enter нужно нажимать теперь. Спасибо, в любом случае.
попробуйте во всех элементах формы на KeyUP прописать: [vba]Код
If KeyCode = 67 And Shift = 2 Then CopyButton_Click Else Exit Sub
[/vba] а не только для msgTextBoxK-SerJC
Благими намерениями выстелена дорога в АД.
Сообщение отредактировал 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