Application.OnKey无法正常重置

Gar*_*ent 5 excel vba excel-vba

我想在这个论坛帮助其他用户(参考).目标是使用Enter数字小键盘上的键来触发宏,而不是使用Worksheet_Change事件宏来实现相同的目的.

在运行任何操作之前,两个Enter键的工作方式相同.您输入内容,触摸任一键,材料放入单元格并向下Selection移动.如果您只需按下任一键,Selection只需向下移动即可.

在标准模块中,我把:

Sub NumericEnter()
    Application.OnKey "{ENTER}", "InsertIntoTables"
End Sub
Run Code Online (Sandbox Code Playgroud)

Sub InsertIntoTables()
    MsgBox "Inserting"
End Sub
Run Code Online (Sandbox Code Playgroud)

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

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

Sub ClearEnter()
    Application.OnKey "{ENTER}", ""
End Sub
Run Code Online (Sandbox Code Playgroud)

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

我不知道我错过了什么.

我看过的内容:

  • 正常输入键,箭头键和TAB键在更改时工作正常 Selection
  • 鼠标点击在更改时工作正常 Selection
  • 价值Application.MoveAfterReturnApplication.MoveAfterReturnDirection看起来也很好.

Tim*_*ams 5

仅使用

Application.OnKey "{ENTER}" 
Run Code Online (Sandbox Code Playgroud)

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

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

expression.OnKey( Key , Procedure )
Run Code Online (Sandbox Code Playgroud)

Procedure参数的描述是这样的:

一个字符串,指示要运行的过程的名称。如果 Procedure 是 ""(空文本),则按下 Key 时什么也不会发生。这种形式的 OnKey 改变了 Microsoft Excel 中击键的正常结果。如果省略 Procedure,则 Key 将恢复到 Microsoft Excel 中的正常结果,并且使用以前的 OnKey 方法进行的任何特殊键分配都将被清除。