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