Sub Макрос1()
Application.OnKey "{F1}", "MyMacro"
End Sub
Sub MyMacro()
MsgBox "Hello"
End Sub
Можно ли средствами VBA отловить событие нажатия клавиш?
1. Без создания формы в проекте можно ли обработать событие, заключающееся в нажатии клавиш F1 - F12? Если эти клавиши недоступны, можно ли отловить событие нажатия клавиш Shift, Ctrl, Alt?
2. Если без создания формы этого сделать нельзя, то как решить ту же задачу не выводя форму на экран, а только загружая её в память?
3. И все это только средствами VBA?
Кто знает - прошу ответить.
Клавиши F1 - F15 это {F1} - {F15}
SHIFT это +
CTRL это ^
ALT это %
Вот так мы отлавливаем клавишу F1 и выводим сообщение "Hello"
Код:
А отменяем наш макрос так
Код:
Sub Макрос1()
Application.OnKey "{F1}", ""
End Sub
Application.OnKey "{F1}", ""
End Sub
Цитата: pavel55
Можно. Смотрите справку по методу OnKey
Клавиши F1 - F15 это {F1} - {F15}
SHIFT это +
CTRL это ^
ALT это %
Вот так мы отлавливаем клавишу F1 и выводим сообщение "Hello"
А отменяем наш макрос так
Клавиши F1 - F15 это {F1} - {F15}
SHIFT это +
CTRL это ^
ALT это %
Вот так мы отлавливаем клавишу F1 и выводим сообщение "Hello"
Код:
Sub Макрос1()
Application.OnKey "{F1}", "MyMacro"
End Sub
Sub MyMacro()
MsgBox "Hello"
End Sub
Application.OnKey "{F1}", "MyMacro"
End Sub
Sub MyMacro()
MsgBox "Hello"
End Sub
А отменяем наш макрос так
Код:
Sub Макрос1()
Application.OnKey "{F1}", ""
End Sub
Application.OnKey "{F1}", ""
End Sub
Не получается! На Ваш пример
"{F12}", "MyMacro"
следует ответ:
Method or data member not found (Error 461)
система не находит Application.OnKey
Что из References нужно вставить, что бы это заработало?
1) Visual Basic for Application
2) Microsoft Excel 11.0 Object Library
3) OLE Automation
4) Microsoft Office 11.0 Object Library