Application.OnKey无法正常重置

时间:2018-01-31 22:36:14

标签: excel vba excel-vba

我正在尝试帮助此论坛中的其他用户(reference)。目标是使用数字小键盘上的 Enter 键来触发宏而不是将Worksheet_Change事件宏用于相同目的。

在运行之前,两者都< kbd>输入键的工作方式相同。您输入内容,触摸任一键,材料放入单元格,Selection向下移动。如果您只是抽出任一键,Selection只会向下移动。

在标准模块中,我把:

Sub NumericEnter()
    Application.OnKey "{ENTER}", "InsertIntoTables"
End Sub

Sub InsertIntoTables()
    MsgBox "Inserting"
End Sub

运行NumericEnter()后,数字键盘上的 Enter 键每次触摸时都会调用正确的宏。正常的 Enter 键不受影响。

然后我尝试通过运行来恢复数字 Enter 键:

Sub ClearEnter()
    Application.OnKey "{ENTER}", ""
End Sub

数字 Enter 键部分恢复为原始行为。它不再调用宏;它允许数据进入单元格,但它根本不会移动Selection (常规输入键仍然正常运行)

我不知道我错过了什么。

我看过的内容:

  • 正常输入键,箭头键和TAB键可以正常更改Selection
  • 点击鼠标可以更改Selection
  • Application.MoveAfterReturnApplication.MoveAfterReturnDirection的值也很好。

1 个答案:

答案 0 :(得分:4)

仅使用

Application.OnKey "{ENTER}" 

没有第二个参数似乎清除宏映射并返回默认键操作(Excel 2013)

https://msdn.microsoft.com/en-us/vba/excel-vba/articles/application-onkey-method-excel

expression.OnKey( Key , Procedure )

Procedure参数的说明包含:

  

一个字符串,指示要运行的过程的名称。 如果程序   是&#34;&#34; (空文本),按下键时没有任何反应。这种形式   OnKey更改Microsoft Excel中击键的正常结果。 如果   省略过程,Key恢复到Microsoft的正常结果   Excel ,以及使用以前的OnKey进行的任何特殊键分配   方法被清除。