Te pongo este método haber si te vale. Dentro del proyecto VBA elige la hoja donde tengas la celda ó celdas en cuestión y solicita el evento selectionchange de worksheet, es decir:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub
para controlar que solo se escriban números utiliza esta función:
isnumeric (valor) que devuelve valores de verdadero o falso.
Te pongo un ejemplo.
La celda A1 es una de ellas. Entonces:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If IsNumeric(Range("A1").Value) = False Then
MsgBox "No es numero. Inténtelo de nuevo"
Range("A1").Select
End If
End Sub
Si introduzco alguna letra dentro de esta celda, cuando cambie de celda me saltará el evento y volverá de nuevo a esta celda.