viernes, 22 de abril de 2016

Dando formato de fecha a un TextBox




Generalmente cuando trabajamos con fechas desde un TextBox en un UserForm, no obtenemos el formato que deseamos.
En américa latina utilizamos el formato "DIA-MES-AÑO", sin embargo, cuando insertamos la fecha en un TextBox, no obtenemos ese formato, por lo que nos devuelve siempre el formato de "MES-DIA-AÑO". Y esto se debe a que el formato está diseñado exclusivamente para Estados Unidos.


En el año 2014, publiqué un vídeo en mi canal de YouTube, dando solución a este problema. Si bien es cierto que se resuelve ese problema, PERO... aquí viene el pero... no es una solución muy elegante que digamos, ya que se utilizan demasiadas líneas de código.

Recientemente un seguidor me abordó con el tema, manifestando que esa solución era demasiado complicada para implementarla cuando estamos trabajando con muchos TextBox que manejan fechas; por lo que me puse a hacer pruebas de diferentes formas, dando con la solución, la cual he tenido frente a mí todo el tiempo. Y me refiero a la siguiente línea:

Format(TextBox1, "MM/DD/YYYY")

Pueden notar que el formato es de "MES-DIA-AÑO", pero al obtener el resultado en la celda, pues sencillamente nos devuelve el formato de "DIA-MES-.AÑO".


Private Sub CommandButton1_Click()
   ActiveCell = Format(TextBox1, "MM/DD/YYYY")
End Sub



Con esto se soluciona ese problema de una forma más elegante.

Aquí les dejo el archivo con el ejemplo de la solución.


Además pueden descargar el archivo de cómo filtrar fechas, según el ejemplo del vídeo de YouTube, pero con el código modificado según esta solución.

Si te ha gustado este artículo... compártelo con tus amigos en las diferentes redes sociales.

Nos vemos en la próxima entrega.

Saludos!




16 comentarios:

  1. como siempre ayudandonos a aprender mas muchísimas gracas mi estimado Otto

    ResponderEliminar
  2. gracias por tan valioso informacion,
    tengo una consulta: ¿esposible que un boton cree otro boton,
    y que este nuevo venga cargado con una imagen espesifica? o que el boton cree un cuadro de imagen?

    ResponderEliminar
  3. Hola, en unos de tus videos del 2014, vi algo parecido a esto...

    Estatus Calificaciones entre:
    DAR 9,00 - 10,00
    AAR 7,00 - 8,99
    EPAAR 4,01 - 6,99
    NAAR <=4,00

    La función que estoy aplicando no da el resultado del estatus, en ciertas celdas si, pero en otras no...
    Ah y al contar, ¿cuantos estudiantes estudiantes están entre 9,00 - 10,00? y así sucesivamente... igual tengo un pequeño error.

    Por favor, podrías ayudarme
    Gracias :-)

    ResponderEliminar
    Respuestas
    1. Dame la fórmula que están implementando para ver dónde está el error.
      Saludos!

      Eliminar
  4. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  5. Ya casi un mes que me escribiste y no he tenido respuesta... por favor, Gracias

    ResponderEliminar
  6. HOLA OTTO COMO ESTA MIRE TENGO UN FORMULARIO CREAR PRECIO DE MOTOCICLETAS Y NO PUEDO PONER LOS TEXTBOX CON EL FORMATO DE MONEDA

    ResponderEliminar
  7. Aunque es diferente a lo publicado en YOUTUBE, las dos soluciones sirven y me ha solucionado mi problema de casi una semana....he dejado de rascarme la cabeza......gracias........Otto

    ResponderEliminar
  8. Hola Buenas Tardes Otto,

    Primero que nada espero te encuentres muy bien, segundo quisiera realizarte una consulta, tengo hecho toda una base de datos de clientes con sus ventas y pagos y todo lo demás. Ahora bien, todo esto lo puedo cargar en las hojas de excel mediante unos userform que trabajan perfectamente, pero me gustaría agregar mediante código de visual basic, que me aparezcan mensajes en la pantalla 1 mes antes de que se vaya terminar un contrato de uno de los clientes. La base de datos es de 60 clientes, y me gustaría automatizar por así decirlo, este proceso ya que el userform lo realicé de tal manera que no abra excel a menos que se le de una instrucción.

    Si pudieras ayudarme con el código sería genial.

    Espero me puedas ayudar, ya que he intentado de todo.

    Gracias.

    Saludos Cordiales!!!

    ResponderEliminar
  9. Estimado Otto, te felicito por tus videotutoriales con VBA, me han ayudado mucho para poder crear un Control de inventarios, pero lo que aun no he podido lograr es realizar un formulario que me de una consulta de ingresos y salidas de los productos en general, solicitado con rango de fechas para poder imprimirlos.
    Ojala me puedas orientar para poder realizar este formulario.

    Saludos.

    ResponderEliminar
  10. Hola como logro que no se apilen las filas, cuando realiza el filtro, las filas se juntan, no se si me doy a entender

    ResponderEliminar
  11. hola como logro que al ingresar una fecha en un textbox la muestre como dd/mm/yyyy

    ResponderEliminar
  12. hola como logro que al ingresar una fecha en un textbox la muestre como dd/mm/yyyy, y lo otro al tener la aplicacion excel oculta con application visible =false, al hacerla visible nuevamente me abre otro libro y no se como evitar eso
    gracias

    slds.

    ResponderEliminar
  13. Hola amigo. No se como abordar lo siguiente....
    Tengo un Textbox y una etiqueta con el nombre "Habitaciones disponibles" necesito una forma de que al ingresar un numero en el textbox para una fecha dada, se guarde ese numero indicando las habitaciones ocupadas y que me diga las habitaciones disponibles.

    Tendras alguna idea o libro o algun otro lugar de como abordar el problema? De antemano, MUCHAS GRACIAS

    ResponderEliminar
  14. Hola Otto,
    Estoy intentando hacer una macro para filtrar mis reportes a través de un formulario como en el vídeo! es una verdadera lastima que los archivos de Excel no continúen disponibles para poder comparar con lo que estoy haciendo! (ambos links están rotos). En fin una vez pongo en marcha la macro en versión test, tengo el siguiente error. run time Error '1004' Method 'Range' of object '_Global' Fail

    ResponderEliminar