复制阵列正在(似乎)随机单元格中交换数天/月

时间:2014-10-28 09:39:40

标签: arrays excel vba excel-vba

我对VBA很新(就像大约两周一样)。

我在一个工作表中定义一个数组,然后迭代地将它复制到另一个数组(这对我以后打算用它做的是必要的,这个代码只是为了检查它是否正常工作)。

当它完成运行时,我的阵列被复制,但是几个(看似随机的)单元格有几天/几个月的时间。例如。 1984年6月1日已成为1984年6月1日

这是代码:

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 (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

有趣的是,当我运行没有日期格式的单元格的代码时,它的工作非常好。任何关于出了什么问题的建议都会非常感激。

1 个答案:

答案 0 :(得分:1)

按要求发布答案:

在数组中输入日期时,如果指定美国日期格式,例如:

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

它将输入日期的正确值,然后它应输出为您的工作簿使用的任何日期格式。