禁用Application.OnKey行为Excel 2013

时间:2016-10-12 08:23:31

标签: excel excel-vba excel-2013 vba

我在Excel 2013中使用Application.OnKey来更改特定行的行为,当按下var $dataTable = $('#' + tabId + ' div.container div.dataTableContainer table.dataTable'); cx键时。

我的代码如下:

在一个模块中:

z

在我的工作簿中:

Public Sub SetOnKey()
    Application.OnKey "x", "Macro1"
    Application.OnKey "c", "Macro2"
    Application.OnKey "z", "Macro3"
End Sub

Public Sub UnsetOnKey()
    Application.OnKey "x"
    Application.OnKey "c"
    Application.OnKey "z"
End Sub

Public Sub MoveCellSelectorToRight()
    ' Move cell selector to the right
    Cells(ActiveCell.Row, ActiveCell.Column + 1).Select
End Sub

Public Sub Macro1()
    ActiveCell.Value = "r"
    MoveCellSelectorToRight
End Sub

Public Sub Macro2()
    ActiveCell.Value = "t"
    MoveCellSelectorToRight
End Sub

Public Sub Macro3()
    ActiveCell.Value = "o"
    MoveCellSelectorToRight
End Sub

如果我不在第6行,Public Sub Workbook_SheetChange(ByVal Sh As Object, _ ByVal Source As Range) SetOnKey If Not Source.Row = 6 Then UnsetOnKey End Sub 仍会执行。我怎样才能防止这种情况发生?

2 个答案:

答案 0 :(得分:0)

您需要正确使用您的IF-Logic:

If Not Source.Row = 6 Then 
  UnsetOnKey
Else
  SetOnKey
End If

答案 1 :(得分:0)

这是你使用的工作表更改,而不是选择更改...我检查过,UnsetOnKey对我来说很好。 然而,最简单的方法是直接在代码中检查选择哪个单元格,如果出现错误则退出