Foros del Web » Soporte técnico » Ofimática »

VBA Excel: UserForm ¿Como se pone una mascara de entrada en un TexBoxt?

Estas en el tema de VBA Excel: UserForm ¿Como se pone una mascara de entrada en un TexBoxt? en el foro de Ofimática en Foros del Web. Hola amigos, pues eso, ¿como se puede colocar una mascara de entrada en un textbox? sería para el VBA de Excel, un formulario un saludete....
  #1 (permalink)  
Antiguo 05/06/2007, 07:57
Avatar de epa2  
Fecha de Ingreso: abril-2002
Ubicación: Málaga
Mensajes: 1.475
Antigüedad: 22 años
Puntos: 9
VBA Excel: UserForm ¿Como se pone una mascara de entrada en un TexBoxt?

Hola amigos,

pues eso, ¿como se puede colocar una mascara de entrada en un textbox?

sería para el VBA de Excel, un formulario

un saludete.
__________________

***Aprendiz de todo y maestro de nada***
  #2 (permalink)  
Antiguo 05/06/2007, 08:17
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 4 meses
Puntos: 144
Re: VBA Excel: UserForm ¿Como se pone una mascara de entrada en un TexBoxt?

¿Te refieres a poner un texto predeterminado?. Si es eso, tan solo tienes que seleccionar la propiedad text que aparece en la ventana de propiedades (abajo a la izquierda, por feceto), e introducir el texto predeterminado.

Salu2
  #3 (permalink)  
Antiguo 05/06/2007, 10:42
Avatar de epa2  
Fecha de Ingreso: abril-2002
Ubicación: Málaga
Mensajes: 1.475
Antigüedad: 22 años
Puntos: 9
Re: VBA Excel: UserForm ¿Como se pone una mascara de entrada en un TexBoxt?

Hola 3pies, gracias por responder.

no me he explicado bien, no era eso,,, tengo un textbox en el que se introducirán fechas, y estoy intentando conseguir que al escribir en él o bien recibir el focus me aparezcan por defecto en el formato dd/mm/aa.

en vez de escribir la fecha de hoy 05/06/07 teniendo que poner manualmente el caracter "/" pues que yo ponga 050607 y el textbox automaticamente me lo ordene con el caracter /

un saludo
__________________

***Aprendiz de todo y maestro de nada***
  #4 (permalink)  
Antiguo 07/06/2007, 01:58
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 4 meses
Puntos: 144
Re: VBA Excel: UserForm ¿Como se pone una mascara de entrada en un TexBoxt?

Disculpa epa2, debía estar muy espeso ese día, porque evidentemente sé lo que es una máscara de entrada (de access que es donde se suelen utilizar). No comento las líneas de código, porque es bastante evidente lo que hace este procedimiento.

Vamos a ver si esto colma tus necesidades:
Código:
Private Sub TextBox1_Change()
largo_entrada = Len(Me.TextBox1)
Select Case largo_entrada
    Case 2
        Me.TextBox1.Value = Me.TextBox1.Value & "/"
    Case 5
        Me.TextBox1.Value = Me.TextBox1.Value & "/"
End Select
End Sub
Nota:
Se podría validar la entrada de datos, para que solo aceptase números, y se podría limitar el tamaño máximo textbox, pero esto ya te lo dejo para tí

Salu2
  #5 (permalink)  
Antiguo 07/06/2007, 07:20
Avatar de epa2  
Fecha de Ingreso: abril-2002
Ubicación: Málaga
Mensajes: 1.475
Antigüedad: 22 años
Puntos: 9
Re: VBA Excel: UserForm ¿Como se pone una mascara de entrada en un TexBoxt?

Hola de nuevo 3pies..

ante todo gracias por responder...
mañana mismo lo probaré a ver que tal queda... estudiaré estas lineas de código, pues aunque sean muy "evidentes" yo de estoy estoy nulo...

el tamaño máximo del textboxt lo he he limitado con la propiedad maxleght y en cuanto a validad que solo se introduzcan números estoy liado con ello, a ver si lo saco,, ya te digo...

lo dicho, gracias...
no te vayas mu lejos.
nos vemos...
__________________

***Aprendiz de todo y maestro de nada***
  #6 (permalink)  
Antiguo 15/06/2007, 15:20
Avatar de epa2  
Fecha de Ingreso: abril-2002
Ubicación: Málaga
Mensajes: 1.475
Antigüedad: 22 años
Puntos: 9
Re: VBA Excel: UserForm ¿Como se pone una mascara de entrada en un TexBoxt?

hola de nuevo,, me funciona 3pies, era lo que yo buscaba,,, (ya te comentaré una cosilla más adelante,pero...) podrías explicarme brevemente el significado del code que me pasas???

especialmente....

¿por que el Select Case 2 y 5 y no otro número???

¿que es Len?, ¿la mayusculas del VB?

lo del ME. estuve leyendo lo que significa, pero no me enteré bien,,, tan solo me quedo claro que se suele usar en los userform y sus controles??

un saludete amigo...

nos vemos pronto, prontitooooooo
__________________

***Aprendiz de todo y maestro de nada***
  #7 (permalink)  
Antiguo 16/06/2007, 09:54
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 4 meses
Puntos: 144
Re: VBA Excel: UserForm ¿Como se pone una mascara de entrada en un TexBoxt?

El len sirve para medir la cantidad de caracteres que contiene una cadena. Por ejemplo, la palabra "casa" tiene 4 caracteres, y es la cifra que devolvería ese len.

Una vez medida la longitud de la cadena de texto, miramos si se trata del 2º caracter (case 2), y en ese caso, le añadimos detrás el signo /. Si llegamos al caracter nº 5 (ejemplo: ##/##), entonces añadimos otro símbolo /. He ahí la explicación del 2 y el 5.

Es lo mismo poner Me, que el nombre del formulario donde estamos controlando el evento TextBox1_Change. Es decir, es lo mismo poner:
Código:
Me.TextBox1.Value = Me.TextBox1.Value & "/"
que poner:
Código:
Userform1.TextBox1.Value = Me.TextBox1.Value & "/"
Aunque en este caso, como el TextBox está en el propio userform que lo llama, se puede quitar el Me, de todas las líneas donde aparece, que funcionará perfectamente el macro.

Salu2
  #8 (permalink)  
Antiguo 14/06/2010, 19:23
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Respuesta: VBA Excel: UserForm ¿Como se pone una mascara de entrada en un TexBoxt?

Probe el codigo y funciona bien, ahota cuando tipeo 06 me pone el "/" todo bien pero me pone el cursor al comienzo del texto, como hago para que luego que me agregre el "/" siçe situe al final el cursor...?

Este es el codigo:
Dim cam As Integer
cam = Len(TextBox9.Text)
Select Case cam
Case 2
Me.TextBox9.Text = Me.TextBox9.Text & "/"
Case 5
Me.TextBox9.Text = Me.TextBox9.Text & "/"
End Select
  #9 (permalink)  
Antiguo 22/01/2013, 13:50
 
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
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 3 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 03:11.