当我尝试将元素放入单元格时,为什么我的Split数组会抛出错误?

时间:2015-05-28 16:17:34

标签: arrays excel vba excel-vba

我正在编写一个程序来解析一个带有多个令人难以置信的长数组的大文本文件,这些数组使用逗号分隔保存在一行中。

<valueslist list="-213.054,-200.3051,-193.7893,-185.3383,-186.351,-186.797,-185.2577,...

我使用split函数尝试将其分解,但当我尝试执行我的程序时,它会抛出Run-Time error 1004 "Application-defined or object-defined error

If InStr(Text, "<valueslist list=") <> 0 Then

    Column = 5
    Text = Replace(Text, "<valueslist list=" & Chr(34), "")
    Text = Replace(Text, Chr(34) & "/>", "")
    wrdArray = Split(Text, ",")
    For i = 0 To UBound(wrdArray)
        Cells(Row, Column).Value = wrdArray(i)
        Column = Column + 1
    Next i
    Row = Row + 1

End If

当我尝试调试时,我需要

Cells(row, column).Value = wrdArray(i)

我在循环中有这个代码,但是当我尝试解析的数组成为大量数据时,它会在我文件的一半处死掉

1 个答案:

答案 0 :(得分:3)

这更像是一份死后报告:P

  

我在循环中有这个代码,但是当我尝试解析的数组成为大量数据时,它会在我文件的一半处死掉

由于它变得越来越大,因此您的代码可能会尝试写入Excel中不存在的列。

如果您使用的是Excel 2003,那么您只能写入256列,如果您使用Excel 2007+,则限制会增加到16384

检查是否达到限制的最佳方法是调试行UBound(wrdArray)

OP终于检查并确认该阵列当时正在进行32k。