在UFT中更改动态数组大小时出错

时间:2019-02-21 23:29:40

标签: vba hp-uft

我正在尝试更改动态数组。 最初创建一个空数组,然后在每次需要向数组中添加项目之前添加1。

Dim PegSubTot()
for i = 1 to end
If value found then
ReDim Preserve PegSubTot(Ubound(PegSubTot) + 1)
PegSubTot(i) = value
endif
next

1 个答案:

答案 0 :(得分:0)

您需要先设置数组大小,然后才能更改它:

Dim PegSubTot   ' declare as variable
for i = 1 to end ' presuming end is set somewhere?
    If value found then
        If IsArray(PegSubTot) Then ' check if it's an array
            ReDim Preserve PegSubTot(Ubound(PegSubTot) + 1) ' If it is, extend array by 1
        Else
            ReDim PegSubTot(0) ' If it's not redim as a one element array
        End If
        PegSubTot(UBound(PegSubTot)) = value ' Set highest element of array to value
    end if
next

第一次遍历时,变量不是数组,因此将其设置为一个元素数组(您无需保留,因为它是找到的第一个值)。在随后的每个循环中,它都是一个数组,因此每次都会扩展一个元素,并且该值始终放在该数组的ubound元素中。

让我知道是否需要进一步澄清。