Como definir o evento OnKey para um intervalo? - excel, vba, excel-vba

Eu quero definir o evento OnKey para o botão de escape em uma células particulares

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

E tenho o pop-up de erro - Macro não está disponível ou está desativado ...
Sub unit () funciona bem como um procedimento autônomo.

Respostas:

2 para resposta № 1

Referência explícita funciona para mim, tente usar a planilha name.subname, como Sheet6.unit:

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