我对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
有趣的是,当我运行没有日期格式的单元格的代码时,它的工作非常好。任何关于出了什么问题的建议都会非常感激。
答案 0 :(得分:1)
按要求发布答案:
在数组中输入日期时,如果指定美国日期格式,例如:
array(x, y) = format(cells(x, y), "mm/dd/yyyy")
它将输入日期的正确值,然后它应输出为您的工作簿使用的任何日期格式。