Ver Mensaje Individual
  #9 (permalink)  
Antiguo 22/01/2013, 13:50
JoaoM
 
Fecha de Ingreso: agosto-2007
Mensajes: 1.945
Antigüedad: 16 años, 8 meses
Puntos: 39
Respuesta: VBA Excel: UserForm ¿Como se pone una mascara de entrada en un TexBoxt?

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
__________________
Las contraseñas son como la ropa interior: Nunca dejarlas donde la gente pueda verlas
http://i64.tinypic.com/rho40i.jpg

Última edición por JoaoM; 22/01/2013 a las 14:25