Datos invertidos por combobox

En un archivo debo capturar mediante combobox la fecha de nacimiento usando combobox, el combobox1 captura día, el combobox2 captura mes y el combobox3 el año,,, el código esta correcto,, combobox1 & "/" & combobox2 &"/"& combobox3, pero el problema es que el resultado me da una fecha incorrecta y me invierte el día y el mes ( mes/dia/año), quisiera que elguien me explicara por que pasa esto.

1 Respuesta

Respuesta
1
Se trata de un problema de la configuración que nos toca sufrir a los que usamos el formato "dd/mm/aaaa".
La solución es relativamente sencilla: pasar los datos a un formato fecha y de ese formato a un texto. Resumiendo:
- Si quieres guardar el valor en una variable de tipo fecha usa:
            Dateserial(combobox3, combobox2, combobox1)
- Si lo quieres en formato texto, con el formato "dd/mm/aaaa", pasalo a fecha y después a texto:
            format$(dateserial(combobox3,combobox2,combobox1),"dd/mm/yyyy")
La ventaja de hacerlo así es que no tendrás problemas de configuraciones ya que la función "dateserial" siempre lleva los parámetros en el mismo orden: año, mes, día.
Hola santiagomf, muchas gracias por tu respuesta que me parece muy interesante, pero también te ofrezco mil disculpas por la ignorancia ya que no soy muy ducho en esto, y no se en realidad en que parte debo poner lo que tu me dices, te envío parte del código par que tengas una idea y me puedas ayudar:
Private Sub CommandButton1_Click()
On Error Resume Next
Application.ScreenUpdating = False
Sheets("Hoja1").Unprotect Password:="contraseña"
Range("a2").Value = ComboBox1.Text & "/" & ComboBox2.Text & "/" & ComboBox3.Text
TextBox1.Value = Range("a3").Value
Sheets("Hoja1").Protect Password:="7482", DrawingObjects:=True, Contents:=True, Scenarios:=True
    ActiveSheet.EnableSelection = xlNorestricctions
Application.ScreenUpdating = True
End Sub
En la parte de los combobox1 y combobox2 es donde se invierten los datos.
Espero tu ayuda. Gracias. Saludos
Veo que quieres poner la fecha en la celda "A2" con la instrucción:
Range("a2").Value = ComboBox1.Text & "/" & ComboBox2.Text & "/" & ComboBox3.Text
Utiliza mejor esta:
Range("a2").Value = dateserial(val(ComboBox3.Text), val(ComboBox2.Text), val( ComboBox1.Text))
Y para asegurarte que te presenta la celda como quieres... ponle un formato:
Range("a2").numberFormat = "dd/mm/yyyy"
Con eso creo que te quedará bien.
Hola santiagomf, muchísimas gracias por tu pronta respuesta, tenias razón, con esto funcionó a la perfección, solo deseo pedrite un ultimo favor antes de finalizar la pregunta, ¿pudieras darme la sintaxis de todo esto que me pasaste?, es que soy nuevo en esto y quisiera aprender, ¿y no tengo otra manera que preguntando a los expertos como tu?, ojala accedas a mi petición. Gracias. Saludos.
En las respuestas te he indicado dos funciones que podrías usar:
- Dateserial(<año>,<mes>,<día>)
- Format(<valor>,<formato>)
Si quieres saber más sobre estas funciones, principalmente los formatos del format, lo más práctico es la propia ayuda de Excel. Escribe el nombre de la función en cualquier módulo, márcalo con el ratón y pulsa <F1> para ver la ayuda.
En la anterior respuesta también te puse que utilizaras la propiedad 'NumberFormat' que te permite cambiar el formato en el que se visualiza el contenido de una celda o un rango.
También en la ayuda encontrarás de todo sobre las propiedades de celdas, rangos, hojas, libros e incluso del propio programa Excel.
Pues gracias santiagomf, por tu tiempo dedicado a ayudarme, me sirvió de mucho todo lo que me brindaste. Un saludo y pues si no piensas lo contrario nos vemos en una nueva pregunta, je je, gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas