Enmascarar TextBox

09/01/2006 - 01:26 por Fabian | Informe spam
Hola a todos!
Encontre este codigo en una pagina.
Trate de hacer que funcione para hacer una mascara de fecha dd/mm/2006, pero
no lo logro. No acepta ceros. Tampoco entiendo como funciona.
Si se les ocurre algo, aqui espero, mientras tanto sigo probando.
El codigo en cuestion:

Private Sub TextBox1_Change()
Dim bytPosicion As Byte
SendKeys "{RIGHT}" ' Esta linea la agregue yo
bytPosicion = TextBox1.SelStart
TextBox1.Text = Format(TextBox1.Text, "###.###.###.####")
TextBox1.SelStart = bytPosicion
End Sub

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
09/01/2006 - 05:53 | Informe spam
hola, Fabian !

Encontre este codigo en una pagina.
Trate de hacer que funcione para hacer una mascara de fecha dd/mm/2006, pero no lo logro. No acepta ceros.
Tampoco entiendo como funciona. Si se les ocurre algo, aqui espero, mientras tanto sigo probando. El codigo en cuestion:
Private Sub TextBox1_Change()
Dim bytPosicion As Byte
SendKeys "{RIGHT}" ' Esta linea la agregue yo
bytPosicion = TextBox1.SelStart
TextBox1.Text = Format(TextBox1.Text, "###.###.###.####")
TextBox1.SelStart = bytPosicion
End Sub



suponiendo que te refieres a controles en formularios VBA [ya que la consulta tambien la haces en el grupo de VB]...

1) 'trabajar' con fechas en vba, requiere de algunos puntos 'a considerar' [como la configuracion regional, entre otros]
y [probablemente] algunas 'medidas' para prevencion/correccion de [posibles] errores en la forma de entrada del usuario
[ademas] depende de si necesitas 'tomar y devolver' [en el mismo textbox] y que 'haras despues' [con un dato u otro]
[es decir] podrias 'almacenar' un dato fecha/serial en una variable y/o 'manejarla' como 'formato' en el control -?-

2) 'partiendo' de que un control textbox 'acepta' todo 'tipo' de entrada por parte del usuario...
-> un 'dato-fecha' puede ser 'introducido' en diferentes 'formatos' y Excel puede [intuitivamente] 'interpretarlo bien'
aunque segun los formatos [entrada/userform y fechas/panel de control] pudiera 'tratarse' de fechas diferentes

1.- una [posible] forma seria 'dar formato' al textbox 'en la salida' [evento _Exit] o en el cambio [evento _Change]
2.- otra [posible] solucion seria usar 3 textboxes 'separados' por controles 'label' =>/<= [para simular 'la vista' ../../..]
[podrias usar otros controles 'label' debajo de los textboxes para indicar 'el orden de entrada' =>dd/mm/aa. mm/dd/aa ...]
3.- otra [posible] forma seria usando un control 'DTPicker/Calendar' [en el formulario] para seleccionar una fecha [...]

para la opcion uno, suponiendo un solo textbox para indicar la fecha [Y solo para 'darle vista' al textbox]:
1.- primero 'asegurate' de indicar al usuario la secuencia 'correcta' de entrada de fechas [segun el orden del sistema]
antes de mostrar el formulario 'indica' la secuencia 'apropiada' [suponiendo que existe un control 'label' para ello]
en el codigo de un procedimiento 'normal' y antes de que se muestre el formulario [p.e.]
en el modulo de codigo del formulario ==Private Sub UserForm_Initialize()
Select Case Application.International(xlDateOrder)
Case 0: Label_X = "mm/dd/aa"
Case 1: Label_X = "dd/mm/aa"
Case 2: Label_X = "aa/mm/dd"
End Select
End Sub
en el modulo del formulario en el evento '_Exit' [al salir] del textbox le 'aplicas' el formato de fecha que prefieras [p.e.]
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox1 = Format(TextBox1, "mm/dd/yyyy")
End Sub

para la opcion dos, suponiendo que la 'secuencia' de entrada [en los textboxes] fuera: mm/dd/aa
textbox1 = los digitos del mes + textbox2 = los digitos del dia + textbox3 = los digitos del a#o
podrias 'asignar' a una variable 'su resultado' con la funcion DateSerial(a#o, mes, dia) [p.e.]
Dim Fecha As Date
Fecha = DateSerial(TextBox3, TextBox1, TextBox2)
=> es importante que 'observes' el orden <
para la opcion tres ['tendras que']:
a) agregar un control dtpicker o un control calendar en el cuadro de controles de vba,
b) insertar el control en el formulario y 'manejar' sus eventos y propiedades

como veras, 'trabajar' con fechas desde vba... tiene algunas 'visicitudes' y cosideraciones que se deben tener en cuenta :))

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 Fabian
10/01/2006 - 18:44 | Informe spam
Gracias Hector, por contestar y por tu valioso codigo.
Como bien dijiste, tambien postie en vb.
El asunto es que hasta ahora hice todo en vba, pero me quiero agrandar...si
es que... me da el cuero!
Estoy tratando de hacer lo mismo en vb, una base de datos de personas, y
luego estadisticas, pero en vez de cargar los datos en las celdas como en
excel, hacerlo en una base de datos de acces con sql y desde un formulario.
Este formulario tiene que ser de carga simple y rapida, por eso estaba
tratando de hacer una mascara, pero no sabia que contaba con los controles
armados.
Aprovecho para preguntarte, sobre el control que hiciste (me fue perfecto)
de listbox y colecciones. Hay algun control similar en vb o tengo que
armarlo?
Saludos, y gracias otra vez.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida