Mmmmm, por lo que veo es un número de teléfono lo que quiere tratar (por lo de celular). Hay que tener en cuenta que la función IsNumeric da como verdadero a un número con una coma o varios puntos (incluso puntos seguidos, haz la prueba), según la configuración del caracter decimal. Por eso, cuidado! que lo mismo no le interesa que le entre esos caracteres

(y menos puntos a gogo

). Una forma de solucionarlo sería quitando estos caracteres con la función replace (ejem: texto=replace(texto,",",""). Pero hay no solo acaba el problema, sino que tambien acepta números como 2,342342E+22, ya que vienen de los tipos single y double del vb. Más para sustituir con replace jajajajaja. Pero sigue habiendo más problemas........ también da como verdadero los números hexadecimales (&had) y octales (&34)....también el signo más y menos (+,-) al principio del número....puffffff Más sustituciones. Y quien sabe que más aceptará

.
Ya se que son casos raros de ver, pero todo puede pasar.....y son fallos.
Al final pienso que se debe restringir la entrada de teclas con el evento keypress o hacer lo que dice eon....revisar los caracteres uno a uno.
Saludos.
P.D. Todas estas sustituciones se deberían realizar despues de que IsNumeric hubiese dado verdadero al número. Pero sigo pensando que no es lo más correcto.