Para que SOLO rconozca números
 
me los facilito un amigo en la WEB (de foro de macros excel)  
Este para individual. Tienes que copiar y pegar para cada TextBox que quieras solo cambias el número del TextBox  
Código:
 Private Sub textbox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'para que TextBox SOLO acepte números y mande mensage imediatamente al entrar una letra
If KeyAscii < 48 Or KeyAscii > 57 Then
KeyAscii = 0
   MsgBox "Error en el dato."
End If
End Sub
  Para TODOS textBox que contenga el formulario 
Para meter dentro y al inicio de la rutina Insertar datos
Este sirve  para un formulario que contenga muchos TextBox para solo aceptar numeros. Avisa al preciona el buton Insertar
aclaro que se usa "i-1" porque los miembros de las colecciones (como "Controls") empiezan con el índice cero  
Código:
 Private Sub InsertarDatos()
    'verificando datos válidos
    For i = 1 to Me.Controls.Count
        If TypeName(Me.Controls(i-1)) = "TextBox" Then       
            If Not IsNumeric(Me.Controls(i-1)) Then
                Msgbox "Corrija dato"    '<--- u otro mensaje que se te ocurra
                Me.Controls(i-1).SetFocus
                Exit Sub          '<-- Muy importante esto!
            End If
        End If
    Next
 
    'Aqui coloca las instrucciones a ejecutarse dado el caso que todo esté bien
    .....
End Sub
  Ahora para que introduzcas un caracter especifico en un número, Ej. Número RIF  o otro que necesites  
Código:
 'Para AUTO-insercion y aceptacion de determinados caracteres
Private Sub TextBox2_Change()
vl = VBA.Left(VBA.UCase(TextBox2), 1)
'SOLO Letras que estan en el codigo. V, E y J
If VBA.Len(TextBox2) = 1 And VBA.UCase(vl) <> "V" And VBA.UCase(vl) <> "E" And _
VBA.UCase(vl) <> "J" Then MsgBox "No permitido": TextBox2 = ""
'Puede usar un solo, guion o caracter eliminando las 2 lines correspondientes al inecesario
Select Case Len(TextBox2)
Case 1, 12 'para el guion
TextBox2.Text = TextBox2.Text & "-"
Case 4, 8 'para el punto
TextBox2.Text = TextBox2.Text & "."
End Select
TextBox2 = VBA.UCase(TextBox2.Text)
If Len(TextBox2) = 1 Then MsgBox "Aqui tu mensage": TextBox2 = "" 'TextBox2 = 0 & TextBox2: Exit Sub
End Sub
  
Esta la pregunta a 3pies
Para un textbox que solo reconozca numros y caracteres determinados por el usuario, existe una linea que cuando presionas el buton Ej. Insertar, te manda un mensage y te coloca el cursor en el TextBox que solo reconoce #s TextBox1.SetFocus, pero existe una linea de codigo para que junto a TextBox1.SetFocus, tambien coloca el cuadro TextBox en azul (seleciona todo el contenido del TextBox. 
Dandose el mensage de MsgBox, Aceptas y si quieres, el focu va a ese TextBox pero tambien puede colocar la caja selecionada en azul para que no tengas que borrar su contenido, sino que reescribir de imediato. No se si me explique bien