OnKey, но также нажмите начальную клавишу - PullRequest
0 голосов
/ 22 апреля 2019

Привет. Я пытаюсь прикрепить макрос к комбинации клавиш, а также запустить исходную комбинацию клавиш, но, похоже, она не работает.

В связи с этим, и я объясню, почему через секунду есть способ отправить нажатую клавишу как переменную или как-то ее перехватить? Например что-то вроде: Application.OnKey "{LEFT}", "testMessage ({LEFT})" , но это не работает для меня. В приведенном ниже примере SendKeys "{RIGHT}" на самом деле по какой-то причине запускается NumLock, я слышал, что это ошибка в Excel, но если я могу отправить ключ как переменную, я могу использовать его для эмуляции SendKeys другим способом, например смещение.

С уважением, Daniel

Sub onKeyToggle()
If ActiveSheet.CodeName = "WS_Deliverables" Then
    Application.OnKey "{LEFT}", "testMessage"
    Application.OnKey "{RIGHT}", "testMessage"
    Application.OnKey "{UP}", "testMessage"
    Application.OnKey "{DOWN}", "testMessage"
Else
    Application.OnKey "{LEFT}", ""
    Application.OnKey "{RIGHT}", ""
    Application.OnKey "{UP}", ""
    Application.OnKey "{DOWN}", ""
End If
End Sub

Sub testMessage()
SendKeys "{RIGHT}"
MsgBox "pressed"
End Sub

1 Ответ

0 голосов
/ 22 апреля 2019

Чтобы вернуть ключи к нормальному значению, вы должны изменить свой код следующим образом.Также вы должны убедиться, что кодовое имя действительно WS_Deliverables , и вы не говорите о видимом названии листа.

Sub onKeyToggle()
    If ActiveSheet.CodeName = "WS_Deliverables" Then
        Application.OnKey "{LEFT}", "testMessage"
        Application.OnKey "{RIGHT}", "testMessage"
        Application.OnKey "{UP}", "testMessage"
        Application.OnKey "{DOWN}", "testMessage"
    Else
        Application.OnKey "{LEFT}"
        Application.OnKey "{RIGHT}"
        Application.OnKey "{UP}"
        Application.OnKey "{DOWN}"
    End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...