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.
| ||||
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 |
| ||||
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*** |
| ||||
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:
Nota: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 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 |
| ||||
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*** |
| ||||
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*** |
| ||||
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:
que poner:Me.TextBox1.Value = Me.TextBox1.Value & "/"
Código:
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.Userform1.TextBox1.Value = Me.TextBox1.Value & "/" Salu2 |
| ||||
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 |
| |||
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:
Para TODOS textBox que contenga el formularioPrivate 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 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:
Ahora para que introduzcas un caracter especifico en un número, Ej. Número RIF o otro que necesitesPrivate 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
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 |