首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Redim Preserve给出‘下标超出范围’

Redim Preserve给出‘下标超出范围’
EN

Stack Overflow用户
提问于 2012-12-27 21:48:38
回答 2查看 14.4K关注 0票数 2

我想要超出范围的一个数组,我一直得到‘Redim Preserve of range’的错误。我知道只有最后一个维度的大小是可以改变的。这正是我正在做的。这里出了什么问题?数组的类型为Variant

代码语言:javascript
复制
BmMatrix = Sheets("BENCH").Range("a60", ActiveSheet.Range("a60").End(xlDown).End(xlToRight))
'totaal gewicht per subdeel in array wegschrijven
Dim aBmMatrix()
aBmMatrix = BmMatrix
rij = UBound(BmMatrix, 1)
kol = UBound(BmMatrix, 2) + 1
ReDim Preserve aBmMatrix(rij, kol)
TotGewKol = UBound(aBmMatrix, 2)
For i = 2 To UBound(BmMatrix, 1)
    g = 0 'g wordt totaal gewicht van land bv
    If BmMatrix(i, bm_kolom) <> "x" Then
        For j = 2 To UBound(bmexnul, 1)
            If bmexnul(j, weightkolom) = BmMatrix(i, bm_kolom) Then g = g + bmexnul(j, 10)
        Next j
    End If
    aBmMatrix(i, TotGewKol) = g
    aBmMatrix(1, TotGewKol) = "Totaal gewicht" 'titel kolom
Next i
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-27 22:04:06

由于使用范围的Value属性为aBmMatrix数组赋值,因此返回的数组具有每个维度的1下限。

当您稍后在没有显式提供下限的情况下对其进行redim时,redim会尝试为每个维度分配默认的下限,即0

您需要显式地提供下限:

代码语言:javascript
复制
ReDim Preserve aBmMatrix(lbound(aBmMatrix,1) to rij, lbound(aBmMatrix,2) to kol)
票数 3
EN

Stack Overflow用户

发布于 2019-04-17 14:05:37

只有在仅更改数组的最后一维时,才能使用保留。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14055734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档