Tengo un listbox que no me devuelve el resultado esperado

Mi listbox se carga con datos, nombre, teléfono, email, y cumpleaños, eso lo hace perfecto, pero cuando envio los datos a una hoja para impresión las fechas de cumpleaños no quedan como en el listbox, ejemplo, si alguien cumple el 08-01 me muestra 01-ago, yo quiero que quede 08-01 de enero como en el listbox. ¿Sabe usted porqué sucede eso? ¿Me puedes dar una solución?

1 respuesta

Respuesta
3

Tienes que pasar campo por campo del listbox a la celda

Y cuando pases el campo de la fecha a la celda, tienes que darle formato, por ejemplo:

Private Sub CommandButton1_Click()
    j = 2
    For i = 0 To ListBox1.ListCount - 1
        Cells(j, "C") = ListBox1.List(i, 0)
        Cells(j, "D") = CDate(ListBox1.List(i, 1))
        j = j + 1
    Next
End Sub

Depende de la versión de office, si no te funciona, intenta con este formato:

Cells(j, "D") = CDate(Format(ListBox1.List(i, 1), "dd/mm/yyyy"))

O con este:

Cells(j, "D") = CDate(Format(ListBox1. List(i, 1), "mm/dd/yyyy"))

Si tienes problemas para adaptarlo, pon el código que tienes para pasar del listbox a la hoja y te ayudo a adaptarlo.

Si es lo que necesitas, r ecuerda valorar la respuesta.

de esta manera cargo el listbox

ListBox1.Clear
For A = 3 To Hoja6.Range("A" & Rows.Count).End(xlUp).Row
    For B = 2 To Hoja2.Range("A" & Rows.Count).End(xlUp).Row
        If Hoja2.Cells(B, 5) = ComboBox1.Text And Hoja2.Cells(B, 6) = Hoja6.Cells(A, 1) Then
         n = ListBox1.ListCount
            ListBox1.AddItem
            ListBox1.List(n, 0) = Hoja2.Cells(B, "A")
            ListBox1.List(n, 1) = Hoja2.Cells(B, "F")
            ListBox1.List(n, 2) = Hoja2.Cells(B, "D")
            ListBox1.List(n, 3) = Hoja2.Cells(B, "J")
            ListBox1.List(n, 4) = Hoja2.Cells(B, "L")
        End If
    Next
Next

de esta manera mado a la hoja

Private Sub CommandButton4_Click()
Dim objExcel As Object
Dim NombreArchivo As String
Application.ScreenUpdating = False
On Error Resume Next
    Set objExcel = Workbooks.Add
    objExcel.Activate
    NombreArchivo = ActiveWorkbook.Name
Application.Workbooks(NombreArchivo).Worksheets(1).Cells(2, 1) = "MOVIMIENTO DE CURSILLOS DE CRISTIANDAD"
Application.Workbooks(NombreArchivo).Worksheets(1).Range(Cells(2, 1), Cells(2, 6)).Merge = True
Application.Workbooks(NombreArchivo).Worksheets(1).Cells(2, 1).Font.Bold = True
Application.Workbooks(NombreArchivo).Worksheets(1).Cells(2, 1).Font.Size = 14
Application.Workbooks(NombreArchivo).Worksheets(1).Range(Cells(2, 1), Cells(2, 6)).HorizontalAlignment = xlCenter
Application.Workbooks(NombreArchivo).Worksheets(1).Cells(3, 1) = "ARQUIDIOCESIS DE CALABOZO"
Application.Workbooks(NombreArchivo).Worksheets(1).Range(Cells(3, 1), Cells(3, 6)).Merge = True
Application.Workbooks(NombreArchivo).Worksheets(1).Cells(3, 1).Font.Bold = True
Application.Workbooks(NombreArchivo).Worksheets(1).Cells(3, 1).Font.Size = 14
Application.Workbooks(NombreArchivo).Worksheets(1).Range(Cells(3, 1), Cells(3, 6)).HorizontalAlignment = xlCenter
Application.Workbooks(NombreArchivo).Worksheets(1).Cells(5, 1) = "CUADRANTE DEL EQUIPO: " & UCase(Me.ComboBox1.Text)
Application.Workbooks(NombreArchivo).Worksheets(1).Range(Cells(5, 1), Cells(5, 6)).Merge = True
Application.Workbooks(NombreArchivo).Worksheets(1).Cells(5, 1).Font.Bold = True
Application.Workbooks(NombreArchivo).Worksheets(1).Cells(5, 1).Font.Size = 14
Application.Workbooks(NombreArchivo).Worksheets(1).Range(Cells(5, 1), Cells(5, 6)).HorizontalAlignment = xlCenter
cont = 0
Range("A7") = "Nº"
Range("B7") = Label2
Range("C7") = Label3
Range("D7") = Label5
Range("E7") = Label7
Range("F7") = Label8
'
Range("A7").Borders.LineStyle = xlContinuous
Range("B7").Borders.LineStyle = xlContinuous
Range("C7").Borders.LineStyle = xlContinuous
Range("D7").Borders.LineStyle = xlContinuous
Range("E7").Borders.LineStyle = xlContinuous
Range("F7").Borders.LineStyle = xlContinuous
Range("A7").Interior.ColorIndex = 15
Range("B7").Interior.ColorIndex = 15
Range("C7").Interior.ColorIndex = 15
Range("D7").Interior.ColorIndex = 15
Range("E7").Interior.ColorIndex = 15
Range("F7").Interior.ColorIndex = 15
Range("A7").Font.Bold = True
Range("B7").Font.Bold = True
Range("C7").Font.Bold = True
Range("D7").Font.Bold = True
Range("E7").Font.Bold = True
Range("F7").Font.Bold = True
j = 8
For i = 0 To ListBox1.ListCount - 1
Range("B" & j) = ListBox1.List(i, 0)
Range("C" & j) = ListBox1.List(i, 1)
Range("D" & j) = ListBox1.List(i, 2)
Range("E" & j) = ListBox1.List(i, 3)
Range("F" & j) = ListBox1.List(i, 4)
Range("F" & j) = CDate(Format(ListBox1.List(i, 4), "dd/mm"))
Range("A" & j).Borders.LineStyle = xlContinuous
Range("B" & j).Borders.LineStyle = xlContinuous
Range("C" & j).Borders.LineStyle = xlContinuous
Range("D" & j).Borders.LineStyle = xlContinuous
Range("E" & j).Borders.LineStyle = xlContinuous
Range("F" & j).Borders.LineStyle = xlContinuous
'
cont = cont + 1
Range("A" & j) = cont
j = j + 1
Next
'
Range("A" & ":B").HorizontalAlignment = xlLeft
Range("C" & ":D").HorizontalAlignment = xlLeft
Range("E" & ":F").HorizontalAlignment = xlRight
Range("G" & ":H").HorizontalAlignment = xlCenter
Range("I" & ":J").HorizontalAlignment = xlCenter
Range("A:A").EntireColumn.AutoFit
Range("B:B").EntireColumn.AutoFit
Range("C:C").EntireColumn.AutoFit
Range("D:D").EntireColumn.AutoFit
Range("E:E").EntireColumn.AutoFit
Range("F:F").EntireColumn.AutoFit
ActiveSheet.PageSetup.PrintArea = ""
ActiveSheet.PageSetup.PrintTitleRows = "$A$1:$F$1"
Unload Me

pero esto es lo que pasa en la hoja

probe adaptando el codigo que me envias y no logre nada

Pero prueba las 3 opciones, para ver cuál es la que te resulta:

Opción 1:

Range("F" & j) = CDate(ListBox1.List(i, 4))

Opción 2:

Range("F" & j) = CDate(Format(ListBox1.List(i, 4), "dd/mm/yyyy"))

Opción 3:

Range("F" & j) = CDate(Format(ListBox1. List(i, 4), "mm/dd/yyyy"))

Es importante que en el formato pongas el año, de esa forma VBA reconoce la fecha. Ya en la columna puedes aplicar el formato de fecha que desees.

En las opciones 2 y 3 estoy poniendo el formato, pero uno es dd/mm/yyyy (día, mes, año); y el otro es mes, día, año, eso es por la versión de office, puede ser que esté reconociendo la fecha americana, pero prueba, con las 3 para que veas con cuál de las 3 te pone la fecha correcta.

Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas