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!
Creado por Otto Javier González
como siempre ayudandonos a aprender mas muchísimas gracas mi estimado Otto
ResponderEliminarHola, en unos de tus videos del 2014, vi algo parecido a esto...
ResponderEliminarEstatus 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 :-)
Dame la fórmula que están implementando para ver dónde está el error.
EliminarSaludos!
Este comentario ha sido eliminado por el autor.
ResponderEliminarYa casi un mes que me escribiste y no he tenido respuesta... por favor, Gracias
ResponderEliminarHOLA OTTO COMO ESTA MIRE TENGO UN FORMULARIO CREAR PRECIO DE MOTOCICLETAS Y NO PUEDO PONER LOS TEXTBOX CON EL FORMATO DE MONEDA
ResponderEliminarAunque 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
ResponderEliminarHola Buenas Tardes Otto,
ResponderEliminarPrimero 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!!!
Excelente profesor Otto
ResponderEliminarEstimado 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.
ResponderEliminarOjala me puedas orientar para poder realizar este formulario.
Saludos.
Hola como logro que no se apilen las filas, cuando realiza el filtro, las filas se juntan, no se si me doy a entender
ResponderEliminarhola como logro que al ingresar una fecha en un textbox la muestre como dd/mm/yyyy
ResponderEliminarhola 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
ResponderEliminargracias
slds.
Hola amigo. No se como abordar lo siguiente....
ResponderEliminarTengo 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
Hola Otto,
ResponderEliminarEstoy 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
Muchas gracias por el aporte me funcionó a la perfección
ResponderEliminartengo el mismo problema, sin embargo yo realizo un busqueda filtrada x ID y necesito actualizar los datos y cuando llego a las fechas es el problema en este caso es específicamente una celda activa pero requiero sea en la columna para que cuando vaya a esa fila no tenga problemas al actualizar la fecha
ResponderEliminarMuy buen aporte Profesor Otto, ¡ÉXITOS!
ResponderEliminarEstimado, muy buenos sus videos tengo el siguiente problema tengo una macro
ResponderEliminarSub transferirDatosAFCInicio()
Dim vigencia As String
Dim appaterno As String
Dim apmaterno As String
Dim nombre As String
Dim cedulaidentidad As String
Dim fnac As String
Dim sexo As String
Dim domicilio As String
Dim region As String
Dim comuna As String
Dim provincia As String
Dim finicioserv As String
Dim tipocontrato As String
Dim nombreafp As String
Dim ultimaFila As Long
Dim ultimaFilaHoja As Long
Dim cont As Long
ultimaFila = Sheets("Base Datos").Range("C" & Rows.Count).End(xlUp).Row
'Estas 3 líneas no se explican en el vídeo, sin embargo se adicionó para garantizar
'que cuando se pretenda ejecutar el proceso y no hayan datos no borre el título de las
'columnas de la hoja EEE
If ultimaFila < 7 Then
Exit Sub
End If
For cont = 7 To ultimaFila
vigencia = Sheets("Base Datos").Cells(cont, 3)
appaterno = Sheets("Base Datos").Cells(cont, 4)
apmaterno = Sheets("Base Datos").Cells(cont, 5)
nombre = Sheets("Base Datos").Cells(cont, 6)
cedulaidentidad = Sheets("Base Datos").Cells(cont, 8)
fnac = Sheets("Base Datos").Cells(cont, 9)
sexo = Sheets("Base Datos").Cells(cont, 12)
domicilio = Sheets("Base Datos").Cells(cont, 15)
comuna = Sheets("Base Datos").Cells(cont, 16)
provincia = Sheets("Base Datos").Cells(cont, 17)
region = Sheets("Base Datos").Cells(cont, 18)
finicioserv = Sheets("Base Datos").Cells(cont, 21)
tipocontrato = Sheets("Base Datos").Cells(cont, 31)
nombreafp = Sheets("Base Datos").Cells(cont, 33)
If vigencia = "NUEVO" Then
ultimaFilaHoja = Sheets("AFC Inicio").Range("B" & Rows.Count).End(xlUp).Row
Sheets("AFC Inicio").Cells.Range("F7:F306") = Format(TextBox1, "MM/DD/YYYY")
Sheets("AFC Inicio").Cells(ultimaFilaHoja + 1, 2) = appaterno
Sheets("AFC Inicio").Cells(ultimaFilaHoja + 1, 3) = apmaterno
Sheets("AFC Inicio").Cells(ultimaFilaHoja + 1, 4) = nombre
Sheets("AFC Inicio").Cells(ultimaFilaHoja + 1, 5) = cedulaidentidad
Sheets("AFC Inicio").Cells(ultimaFilaHoja + 1, 6) = fnac
Sheets("AFC Inicio").Cells(ultimaFilaHoja + 1, 7) = sexo
Sheets("AFC Inicio").Cells(ultimaFilaHoja + 1, 8) = nombreafp
Sheets("AFC Inicio").Cells(ultimaFilaHoja + 1, 9) = domicilio
Sheets("AFC Inicio").Cells(ultimaFilaHoja + 1, 10) = comuna
Sheets("AFC Inicio").Cells(ultimaFilaHoja + 1, 11) = provincia
Sheets("AFC Inicio").Cells(ultimaFilaHoja + 1, 12) = region
Sheets("AFC Inicio").Cells(ultimaFilaHoja + 1, 13) = finicioserv
Sheets("AFC Inicio").Cells(ultimaFilaHoja + 1, 18) = tipocontrato
End If
Next cont
MsgBox "Proceso AFC Inicio terminado ", vbInformation, "Resultado"
End Sub
pero lo que pasa puntualmente en las fechas me copia mes/dia/año, y necesito que me copie como dia/mes/año, he intentado pero no me resulta, por favor si me puede ayudar, de antemano muchas gracias
Buenas, tengo el mismo problema, ¿Has conseguido solventarlo?
EliminarExcelente, gracias
ResponderEliminarTe agradezco por la ayuda, llevo meses que cambiando el formato a mano... pero este año es excelente porque encontre la respuesta; y me funciono al 10 000 000%
ResponderEliminarPrivate Sub fecha_afterupdate()
Sheets("Compra de producto").Select
Range("B4").Select
ActiveCell.FormulaR1C1 = fecha.Value
ActiveCell = Format(fecha, "MM/DD/YYYY")
End Sub
Buenas, he introducido el formato para los textbox que deben contener fechas, y en unos me lo hace bien y en otro no. ¿Que puedo hacer? Gracias
ResponderEliminar