我的阵列不兼容吗?

时间:2017-08-02 16:45:03

标签: arrays vba excel-vba excel

我试图循环一个包含拆分字符串的数组,通过这一行完成:
grid51grid44grid33grid22grid11

这一切都很好,但是,当我尝试通过Recall.RESP循环遍历此repHolder() = Split(rep, ",")数组时,每次遇到repHolder()错误都会遇到

这对我没有意义。当我单步执行数组时,它每次都会在第一个元素上失败;这一行:

for

我尝试将subscript out of range设置为0和1,两者都在循环的第一个序列中失败。这对我来说是因为阵列没有规定的大小;我不能以这种方式循环它,但这对我来说仍然没有意义,因为它仍然充满了元素。

以下是我要做的整个代码块:

If repHolder(j) = counter Then

1 个答案:

答案 0 :(得分:1)

您循环遍历repNames()并通过拆分设置此新数组(对于每个repName元素反复重复...)

 For Each rep In repNames()    
    repHolder() = Split(rep, ",")    
 Next rep

此循环的每次迭代都会将repHolder()重置为rep元素的分割,从而删除在上一次迭代中刚刚在该数组中设置的任何值。所以一旦完成,只有RepNames()的最后一个元素被分割成repHolder()数组。

例如,如果RepNames()看起来像:

Element 0: "james,linda,mahesh,bob"
Element 1: "rajesh,sam,barb,carrie"
Element 2: ""

然后在所有这次迭代之后,你的repHolder数组将变为空,因为最终元素中没有任何内容。

For Each rangeCell In repComboRange行上粘贴断点(F9),然后在VBE中查看“本地”窗格。查看当时repHolder()数组中存储的值。我怀疑那里什么也没有。

另一个奇怪的是你正在循环1到17. repHolder()将是一个基于0的数组,所以应该是0到16.但是......即使这是无稽之谈,因为这真的只有意义作为For Each循环(或使用uBound(repHolder)确定循环次数:

For Each counter In strHolder()
    Stop
    For each repHolderElem in repHolder
        If repHolderElem = counter Then
        ....
    Next repHolderElem