multidimensional array存储/打印问题

我正在研究parsing器以供在工作中使用。 基本上我有一个Excel文档充满了数据的行,我需要parsing并存储到一个multidimensional array的工作。

这是我到目前为止的代码:

Dim a Dim iRows As Long Dim i As Integer Dim aArray() As Variant a = Array(2,3,4,5,6,9,10,14,19,21,23,25,29,38) iRows = ActiveWorkbook.Sheets(1).UsedRange.Rows.Count ReDim aArray(iRows, UBound(a)) For i = 2 To iRows + 1 For x = 0 To UBound(a) aArray(i - 2, x) = ActiveSheet.Cells(i, a(i - 2)).Value Next x Next i 

请记住i = 2的偏移量,而iRows + 1将忽略标题行

问题是,当我试图输出它时,我发现所有的行都是相同的,所以aArray(0,1)aArray(1,1)是相同的值,它们应该是不同的行的不同值文件。

此外,应该有14列,我每行存储,但是当我尝试输出任何值过去的位置9我得到一个超出范围的错误

 ActiveSheet.Cells(1, 1).Value = aArray(10, 0) ActiveSheet.Cells(1, 2).Value = aArray(11, 0) 

基于我使用的小数组来指定要在主数组中存储哪些值,它们应该是每个包含在aArray中的子数组的14个总位置。

任何见解?

请记住,这是我的第一个真正的VBA脚本,所以如果我犯了错误,请让我的病人来自JS / PHP背景,所以这对我来说有很大的不同。

您在aArray中切换尺寸。 在代码中,你使用(count_of_rows_in_usedRang,count_of_elements_in_a)来填充aArray,我想象使用的响应只有9行,所以aArray(10,0)超出范围而aArray(0,10)不会。

我想在你的问题的第一部分输出可能会有类似的问题。 如果不是,请张贴,excel表单中的内容以及结果。

如果您只是简单地从工作表中读取数据,忽略标题,那么您就过于复杂了。 像这样的东西将工作:

 Const intOffsetRow As Integer = 2 Dim rngUsedRange As Range Dim varWksArray As Variant Set rngUsedRange = ActiveWorkbook.Sheets(1).UsedRange With rngUsedRange varWksArray = .Range(Cells(intOffsetRow, 1), Cells(.Rows.Count, .Columns.Count)).Value End With Set rngUsedRange = Nothing 

如果您不介意数组中存在空白/空行/维,则可以进一步简化:

 Const intOffsetRow As Integer = 1 Dim rngUsedRange As Range Dim varWksArray As Variant Set rngUsedRange = ActiveWorkbook.Sheets(1).UsedRange varWksArray = rngUsedRange.Offset(intOffsetRow, 0).Value Set rngUsedRange = Nothing