Arrays 使用vba将大数组写入范围的问题

Arrays 使用vba将大数组写入范围的问题,arrays,vba,excel,range,worksheet,Arrays,Vba,Excel,Range,Worksheet,当我尝试将数组(30K行)写入特定范围时,出现运行时错误“400” 以下是我如何定义阵列(简化版): 运行此操作失败。当我用“hello”这样的字符串替换“test”时,它确实起作用。任何帮助都将不胜感激(Excel 2013,我使用“选项明确”) 编辑:请注意,我编写数组的目标不是“sheets2”,而是在for循环期间动态创建的工作表。因此,我在实际代码中使用sheetname(I)而不是“sheets2”。不知道这是否会造成问题。此外,我有时会出现1004错误,只有一半的数据会写入工作表。

当我尝试将数组(30K行)写入特定范围时,出现运行时错误“400”

以下是我如何定义阵列(简化版):

运行此操作失败。当我用“hello”这样的字符串替换“test”时,它确实起作用。任何帮助都将不胜感激(Excel 2013,我使用“选项明确”)


编辑:请注意,我编写数组的目标不是“sheets2”,而是在for循环期间动态创建的工作表。因此,我在实际代码中使用sheetname(I)而不是“sheets2”。不知道这是否会造成问题。此外,我有时会出现1004错误,只有一半的数据会写入工作表。。。非常奇怪。

您在哪里声明并为您的
test
变量赋值?(您在评论中提到了它,但您没有向我们展示代码。)当它崩溃时,
test
的维度是什么?(即是
1到30000、1到500、还是
0到32167、0到11、还是
1到31231、1到17、1到321等)我找到了导致错误的原因。有些单元格以“=”开头,然后抛出404。你知道让excel接受这些的最佳方法吗?我不想删除它们,我想你唯一能做的就是在数组中循环,然后做一个
如果剩下(test(I,j),1)=“=”然后test(I,j)=“'”&test(I,j)
)。(愚蠢的Excel!尽管使用了
Value
属性,但它试图表现得很好,并猜测您正在将公式放入单元格,并且错误地猜测您的意图。:()另一个解决方案可能是将目标范围预格式化为
范围。NumberFormat=“@”
(文本)然后将数组写入该范围。奇怪的是,当单元格作为预制文本输入时,excel会将
'
符号放在
'=bla
前面。但是,从数组写入后,
'
就消失了。
Set wb = ActiveWorkbook
Set ws = wb.ActiveSheet
With ws
    tweets = .Range(Cells(1, 1), Cells(lastrow, lastcol)).Value2
    'then there is code to filter the tweets array and create a new array called test which contains the filtered values
End With

wb.Sheets("sheets2").Cells(1, 1).Resize(UBound(test, 1), UBound(test, 2)).value = test