No entiendo por qué solamente en algunos casos. Te comento por qué la fecha se convierte a formato mes/día/año. Como sabrás VBA está desarrollado en lenguaje inglés, por lo tanto, el formato original de fecha es mes/día/año, entonces, como el dato que está almacenado en el listbox o combobox o textbox, es un texto, internamente VBA cuando lo pasa a una celda del tipo fecha, asume que debe ser mes/día/año. Esto transforma tu fecha de día/mes/año, si tienes 4 de junio de 2015, entonces te pone 6 de abril de de 2015. Para arreglarlo, hay que forzar a ese texto a que conserve la fecha como la queremos.
Después de la extensa explicación, la alternativa que veo es que cambies esto:
H1. Range(h1. Cells(2, 1), h1.Cells(f, c)) = ListBox1. List
Por este código:
Private Sub CommandButton3_Click()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set h1 = Sheets.Add
'
'c = ListBox1.ColumnCount
'f = ListBox1.ListCount + 1
'h1.Range(h1.Cells(2, 1), h1.Cells(f, c)) = ListBox1.List
j = 2
For i = 0 To ListBox1.ListCount - 1
H1.Cells(j, "A") = ListBox1.List(i, 0)
H1.Cells(j, "B") = ListBox1.List(i, 1)
H1.Cells(j, "C") = ListBox1.List(i, 2)
H1.Cells(j, "D") = CDate(ListBox1.List(i, 3))
H1.Cells(j, "E") = ListBox1.List(i, 4)
j = j + 1
Next
h1.Range("A1:E1") = Array("DNI", "APELLIDOS Y NOMBRE", "TELEFONO", "FECHA REALIZACION", "TIPO DE DOCUMENTO")
h1.Cells.EntireColumn.AutoFit
h1.PageSetup.Orientation = xlLandscape
h1.Range("A1:H1").Font.Bold = True
'
With Application.FileDialog(msoFileDialogSaveAs)
.Title = "Exportar archivo a PDF"
.AllowMultiSelect = False
.FilterIndex = 25
If .Show Then
march = .SelectedItems(1)
h1.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=march, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=True
End If
End With
'
h1.Delete
Unload Me
UserForm1.Show
End Sub
En esta línea le estoy diciendo que convierta el texto a fecha
h1.Cells(j, "D") = CDate(ListBox1.List(i, 3))
Si no te funciona, cambia esa línea por esta:
H1.Cells(j, "D") = Format(ListBox1.List(i, 3), "mm/dd/yyyy")
Saludos. Dante Amor
Recuerda valorar la respuesta.