Discordancia fecha actual en ComboBox

Una vez genero la fecha d, los valores que extraigo son erróneos y me sale por defecto en año = 1905, mes = 01(enero) y día = 29, cuando obviamente no estamos a esa fecha. No he encontrado la solución por ningún sitio, y estoy un poco verde en esto, si me puede echar una mano lo agradecería! Saludos

Private Sub ComboBox4_Change()
'Se utiliza para poder generar un numero de oferta
 Range("B3").Select
   Selection.End(xlDown).Select
   seleccion = ActiveCell.Row

        d = Date
        y = Format(Year(d), "yyyy")

        m = Format(Month(d), "mm")
        dia = Format(Day(d), "dd")

                    
                    Select Case ComboBox4
                            Case "Material"
                            'Generar # oferta de material
                            Dim mat As String
                            mat = "C16/" & dia & m
                            Cells(seleccion, 3) = mat

                            Case "Proyecto"
                            'Generar # oferta de proyecto
                            Dim proy As String
                            proy = "16/" & dia & m
                            Cells(seleccion, 3) = proy                                                           
                    End Select

End Sub

1 respuesta

Respuesta
3

H o  l a:

Te explico lo que sucede. En esta línea:

Y = Format(Year(d), "yyyy")

Le indicas que obtenga el año de la variable d

Year(d)

Luego le dices que en la variable "y" te ponga solamente el año de year(d).

Entonces el año de year(d) = 2016.

Las fechas en excel son números, solamente que excel los pone en formato de fecha. El número 1 corresponde a la fecha 1/1/1900, el número 2 a 2/1/1900 y así sucesivamente; de la sucesión de números al 2016 le corresponde la fecha 8/7/1905. Es por eso que te muestra el año 1905.

Lo que debes utilizar es lo siguiente:

    d = Date
    y = Format(d, "yyyy")
    m = Format(d, "mm")
    dia = Format(d, "dd")

O también te puedes ahorrar la variable "d"

    'd = Date
    y = Format(Date, "yyyy")
    m = Format(Date, "mm")
    dia = Format(Date, "dd")

O también te puedes ahorrar todas las variables:

Private Sub ComboBox4_Change()
'Se utiliza para poder generar un numero de oferta
    Range("B3").Select
    Selection.End(xlDown).Select
    seleccion = ActiveCell.Row
    '
    Select Case ComboBox4
        Case "Material"
            'Generar # oferta de material
            Cells(seleccion, 3) = "C16/" & Format(Date, "dd") & Format(Date, "mm")
        Case "Proyecto"
            'Generar # oferta de proyecto
            Cells(seleccion, 3) = "16/" & Format(Date, "dd") & Format(Date, "mm")
    End Select
End Sub
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas