Wie definiert man das OnKey-Ereignis für einen Bereich? - Excel, VBA, Excel-VBA

Ich möchte OnKey-Ereignis für die Escape-Schaltfläche für bestimmte Zellen definieren

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If ActiveCell.Value = "a" Or ActiveCell.Value = "b" Then
Application.OnKey "{ESC}", "unit"

Und habe das Fehler-Popup - Makro ist nicht verfügbar oder ist deaktiviert ...
Untereinheit () funktioniert gut als eigenständige Prozedur.

Antworten:

2 für die Antwort № 1

Explizite Referenz funktioniert für mich, versuchen Sie Blatt namename wie Sheet6.unit zu verwenden:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Debug.Print ActiveCell.Value
If ActiveCell.Value = "d" Or ActiveCell.Value = "e" Then
Application.OnKey "{ESC}", "Sheet6.unit"
Else
Application.OnKey "{ESC}", ""
End If
End Sub


Public Sub unit()
Debug.Print "Unit!"
End Sub