Lo que pides se puede lograr con solo dos líneas en el evento KeyPress de un TexBox. Esto es la forma más ingeniosa de simplificar todo el código de los otros usuarios que compartieron más arriba.
Ejemplo:
El código anterior solo permite la entrada de números (0 a 9), tecla de separación (Space) y saltar línea abajo (Enter). Solo si se cumple la condición ]If KeyAscii = 8 Then Exit Sub, o sea, al presionar la tecla (del-prev), borra hacia atrás el texto a la vez que abandona inmediatamente la rutina para omitir la siguiente parte del código, que restringiría cualquier tecla que no sean números, espacio y enter.
Si la condición anterior no se cumple, el evento pasa a la siguiente condición If InStr("0123456789 " & vbCrLf, Chr(KeyAscii)) = 0 Then KeyAscii = 0, donde la función InStr busca dentro de una cadena algún carácter asignado en Chr(KeyAscii). Por ejemplo, el número 53 en código ascii, corresponde a la tecla número 5. De modo Chr(KeyAscii) devuelve el número 5 si la tecla presionada correspondía al código ascii 53. Como el 5 se encuentra dentro de la cadena "0123456789 ", InStr devuelve 1 (la condición no se cumple), y no se ejecuta la sentencia KeyAscii = 0 que le sigue, lo cual permite que el TexBox muestra el 5. Si se presiona cualquier tecla diferente al contenido de la cadena, InStr devolverá 0 (porque no encontrará la tecla asociada dentro de la cadena), cumpliéndose así la condición y ejecutando la sentencia KeyAscii = 0 para restringir esa tecla presionada.
Observemos que la cadena que contiene los caracteres permitidos es: "0123456789 " & vbCrLf, donde están los números 0 a 9, un espacio después de 9 y entes de las comillas (que corresponde a la tecla Space), y vbCrLf, que es el comando que permite saltar de línea en algún texto (Enter). Dentro de esa cadena se pueden introducir más caracteres para personalizar la restricción. Hay teclas que no tienen un carácter específico, y solo es posible su lectura en código Ascii, como sucede con la tecla "borrar atrás", cuyo código ascii es 8. Como no podemos manejarla dentro de la cadena, la ponemos en una condición aparte, previo a la condición que solo permite números. Es necesario que después de una condición de lectura de código ascii, pongamos Exit Sub para abandonar la rutina y el TexBox permita su entrada.
Si quieres saber el código ascii de alguna tecla para emplearla en tu restricción de teclas de un TexBox, un pequeño truco es hacer esto:
En el título de la ventana te aparecerá el código ascii de cualquier tecla que presiones. Si quieres saber a qué carácter corresponde dicho código, puedes cambiar Caption = KeyAscii por Caption = Chr(KeyAscii). Saludos.