首页 > 解决方案 > ReDim 保留二维变量数组

问题描述

这似乎是关于这个主题的第 100 万个问题,但搜索并没有帮助我。

我正在尝试调整二维数组的最后一个维度的大小,但总是在 ReDim Preserve 行中出现“索引超出范围”错误。

在此处输入图像描述

Dim arrCurrentDataset As Variant

For i = 0 To UBound(fileNames) - 1

    strPath = fileNames(i)

    Set wkbSource = Workbooks.Open(Filename:=strPath, UpdateLinks:=xlUpdateLinksNever, ReadOnly:=True, Notify:=True)
    Set wksSource = wkbSource.Sheets(1)

    Dim lngRows As Long
    lngRows = wksSource.UsedRange.SpecialCells(xlCellTypeLastCell).Row

    'Store dataset to array and afterwards increase second dimension by 2 -> create space to add Materialart and Beschaffungsart
    arrCurrentDataset = wksSource.Range("A4:I" & lngRows).value
    ReDim Preserve arrCurrentDataset(UBound(arrCurrentDataset, 1), UBound(arrCurrentDataset, 2) + 2)

    '...

next i

我的声明有问题吗?我是否隐式尝试更改数据类型?

非常感谢你的帮助!

标签: arraysexcelvba

解决方案


您的数组维度基于 1,但默认值为 0(除非您有Option Base 1声明),因此您必须在以下内容中指定Redim

ReDim Preserve arrCurrentDataset(1 to UBound(arrCurrentDataset, 1), 1 to UBound(arrCurrentDataset, 2) + 2)

推荐阅读