2016-10-12 7 views
0

Excel 2013でApplication.OnKeyを使用して、c,x、およびzのキーが押されたときの特定の行の動作を変更しています。Application.OnKeyの動作を無効にするExcel 2013

私のコードは以下の通りです:

モジュールでは:私のワークブックで

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 

SetOnKeyはまだ実行されます。これを防ぐ方法を教えてください。

+0

['SelectionChange'](https://msdn.microsoft.com/en-us/)ライブラリ/オフィス/ ff194470.aspx)イベント – Phylogenesis

答えて

0

あなたのIF-Logicは権利を取得する必要があります:

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

私はすでにそれを試みました。 @Phylogenesisによると、 'SelectionChange'イベントを使って解決しました。 –

+0

あなたのコードはより洗練されていますが、同等です。 "いない" ;-)なしでも良い – Pierre

0

それは私がUnsetOnKeyが私のために正常に動作し、確認...のSelectionChange、あなたが使用するワークシートの変更ではありません。 しかし、最も簡単なのは、どのセルが選択されているのかを直接チェックし、間違っていると終了することです。

関連する問題