复制一个数组是交换几天/几个月(看似)随机单元格

我对VBA很新颖(大约2周)。

我在一张表中定义了一个数组,然后将其复制到另一个表单中(这对我后来想要做的事情是必需的,这个代码只是为了检查它是否正常工作)。

当它完成运行时,我的arrays被复制,但几个(看似随机的)单元有几天/几个月的转换。 EG 06/01/1984已成为01/06/1984

这是代码:

Sub Define_Arrays() Dim Wsh As Worksheet Dim FTSE100(1 To 1592, 1 To 5) As String Dim row_A As Integer Dim column_A As Integer ' Define FTSE 100 Array Set Wsh = sheet2 Wsh.Activate row_A = 1 column_A = 1 For row_A = LBound(FTSE100, 1) To UBound(FTSE100, 1) For column_A = LBound(FTSE100, 2) To UBound(FTSE100, 2) FTSE100(row_A, column_A) = Cells(row_A, column_A) Next column_A Next row_A ' Print FTSE 100 Array Set Wsh = sheet1 Wsh.Activate For row_A = LBound(FTSE100, 1) To UBound(FTSE100, 1) For column_A = LBound(FTSE100, 2) To UBound(FTSE100, 2) Cells(row_A, column_A) = FTSE100(row_A, column_A) Next column_A Next row_A End Sub 

原始数组看起来像这样

 Date (GMT) Open High Low Last 06/01/1984 997.5 1029.3 993.3 1029 13/01/1984 1034.6 1042.7 1020.2 1042.7 20/01/1984 1046 1060.6 1036.2 1059 27/01/1984 1046.8 1075.9 1039.9 1075.9 03/02/1984 1068.6 1082 1046 1059.8 10/02/1984 1038.2 1054.2 1010 1018 

输出看起来像这样

 Date (GMT) Open High Low Last 01/06/1984 997.5 1029.3 993.3 1029 13/01/1984 1034.6 1042.7 1020.2 1042.7 20/01/1984 1046 1060.6 1036.2 1059 27/01/1984 1046.8 1075.9 1039.9 1075.9 02/03/1984 1068.6 1082 1046 1059.8 02/10/1984 1038.2 1054.2 1010 1018 

我清除了两个列的date格式,我得到了以下内容:

原版的:

 Date (GMT) Open High Low Last 30687 997.5 1029.3 993.3 1029 30694 1034.6 1042.7 1020.2 1042.7 30701 1046 1060.6 1036.2 1059 30708 1046.8 1075.9 1039.9 1075.9 30715 1068.6 1082 1046 1059.8 30722 1038.2 1054.2 1010 1018 

输出:

 Date (GMT) Open High Low Last 30834 997.5 1029.3 993.3 1029 13/01/1984 1034.6 1042.7 1020.2 1042.7 20/01/1984 1046 1060.6 1036.2 1059 27/01/1984 1046.8 1075.9 1039.9 1075.9 30743 1068.6 1082 1046 1059.8 30957 1038.2 1054.2 1010 1018 

有趣的是,当我运行与date格式的单元格的代码,它工作绝对好。 任何有关错误的build议将不胜感激。

根据要求作为答复发布:

将dateinput到数组中时,如果指定美国date格式,例如:

 array(x, y) = format(cells(x, y), "mm/dd/yyyy") 

它会inputdate的正确值,然后它应该输出到您的工作簿使用的任何date格式。