Eu tive um problema como o seu há algum tempo, e encontrei uma solução que você pode usar também. O seguinte é alterado para se adequar ao seu problema específico.
Coloque isso no código da planilha:
Private Sub Worksheet_Activate()
Dim sht As Worksheet
Set sht = ActiveWorkbook.Worksheets("Sheet1")
If Not Intersect(ActiveCell, sht.Range("A1:A10")) Is Nothing Then
ChangeKeys True
End If
End Sub
Private Sub Worksheet_Deactivate()
ChangeKeys False
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim sht As Worksheet
Set sht = ActiveWorkbook.Worksheets("Sheet1")
If Not Intersect(ActiveCell, sht.Range("A1:A10")) Is Nothing Then
ChangeKeys True
Else
ChangeKeys False
End If
End Sub
Coloque isso em um módulo:
Sub ChangeKeys(KeysChanged As Boolean)
If KeysChanged Then
'Add procedures to the keys
'Functions on numpad (http://help.adobe.com/en_US/AS2LCR/Flash_10.0/help.html?content=00000520.html)
Application.OnKey "{106}", "'KeyPress " & 42 & "'" 'Multiply *
Application.OnKey "{107}", "'KeyPress " & 43 & "'" 'Add +
Application.OnKey "{109}", "'KeyPress " & 45 & "'" 'Subtract -
Application.OnKey "{111}", "'KeyPress " & 47 & "'" 'Divide /
Else
'Reset the keys
'Functions on numpad (http://help.adobe.com/en_US/AS2LCR/Flash_10.0/help.html?content=00000520.html)
Application.OnKey "{106}" 'Multiply *
Application.OnKey "{107}" 'Add +
Application.OnKey "{109}" 'Subtract -
Application.OnKey "{111}" 'Divide /
End If
End Sub
Function KeyPress(the_key As Long)
Application.SendKeys "{F2}{" & Chr$(the_key) & "}"
End Function
O comportamento de pressionamento de tecla é alterado para "+ - * /" (embora pareça não funcionar para "/" no Excel 2013) quando você seleciona uma célula em Intervalo ("A1: A10") e é alterado novamente quando selecione uma célula fora desse intervalo ou ative outra planilha. Você pode querer fazer algo semelhante quando você desativa / ativa a pasta de trabalho inteira.
Atenciosamente,
Simon