我在Excel 2013中使用Application.OnKey来更改特定行的行为,当按下var $dataTable = $('#' + tabId + ' div.container div.dataTableContainer table.dataTable');
,c
和x
键时。
我的代码如下:
在一个模块中:
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
仍会执行。我怎样才能防止这种情况发生?
答案 0 :(得分:0)
您需要正确使用您的IF-Logic:
If Not Source.Row = 6 Then
UnsetOnKey
Else
SetOnKey
End If
答案 1 :(得分:0)
这是你使用的工作表更改,而不是选择更改...我检查过,UnsetOnKey对我来说很好。 然而,最简单的方法是直接在代码中检查选择哪个单元格,如果出现错误则退出