Transposição de matriz com datas altera datas
Comportamento:
Quando transponho uma matriz unidimensional, contendo datas, para imprimi-las em uma folha na sua totalidade, algumas datas são alteradas dodd/mm/yy
paramm/dd/yyyy
.
Em particular, quando o dia do mês:
é menor ou igual a 12, comoJanuary 2, 2016 (02/01/16)
ouMay 11, 2016 (11/05/16)
, a data é impressa com o formato da datamm/dd/yy
e está alinhado à direita.é maior ou igual a 13, comoApril 23, 2016 (23/04/16)
ouDecember 17, 2016 (17/12/16)
, a data é impressa com o formato da datadd/mm/yyyy
e está alinhado à esquerda.Quando eu uso um loop for para imprimir cada data separadamente, ou não transpiro a matriz e imprimo cada data na primeira linha de cada coluna, no entanto, todas as datas são impressas com o formatodd/mm/yy
e todas as datas estão alinhadas à direita.
Alguém pode explicar por que isso acontece, se esse é um comportamento normal ou se é um bug / recurso.
Informação adicional:Eu tenho:
Windows 8.1 (inglês dos EUA)Office 365 Student (Estados Unidos da América) (Excel 2016 de 32 bits)Configuração de localidade: HolandaCódigo:Option Explicit
Sub TransposeDatesArray()
Dim arrDates() As Date
Dim i As Variant
ReDim arrDates(0)
For i = CDate("Januari 01, 2016") To CDate("December 31, 2016")
If UBound(arrDates) = 0 Then
ReDim arrDates(1 To 1)
Else
ReDim Preserve arrDates(1 To UBound(arrDates) + 1)
End If
arrDates(UBound(arrDates)) = i
Next
With ThisWorkbook.Worksheets(1)
.Cells.Delete
.Cells(1, 1).Resize(UBound(arrDates)).Value = Application.Transpose(arrDates)
.Cells(1, 2).Resize(UBound(arrDates)).Value2 = Application.Transpose(arrDates)
.Cells(1, 3).Resize(UBound(arrDates)).Formula = Application.Transpose(arrDates)
For i = LBound(arrDates) To UBound(arrDates)
.Cells(i, 4).Value = arrDates(i)
.Cells(i, 5).Value2 = arrDates(i)
.Cells(i, 6).Formula = arrDates(i)
Next
End With
End Sub
Resultado: