为什么我收到“下标超出范围”错误?

时间:2016-08-11 23:17:50

标签: vba excel-vba excel

我有以下代码在UserForm内,在主模块中的一堆其他进程的末尾附近调用,但是当它到达Me.GPListBox.List(iterI, 0) = Split (CCGPValues(key), " - ")(0)时,我得到一个错误,说明下标是超出范围。

Debug.Print之前的For Each,控制台输出“Jorge Cardona”。这是拆分的第一部分。 CCGPValues(key)等于“Jorge Cardona - $ 207.31”,但是当它在GPListBox中调用相同的分割时,它会中断。当它通过Debug.print工作时,为什么会发生这种情况?

    Dim key As Variant, iterI As Integer, iterX As Integer
    Debug.Print Split(CCGPValues(147), " - ")(0)
    For Each key1 In CCGPValues.Keys
            Me.GPListBox.AddItem
            Me.GPListBox.List(iterI, 0) = Split(CCGPValues(key), " - ")(0) 'Breaks here
            Me.GPListBox.List(iterI, 1) = Split(CCGPValues(key), " - ")(1)
            CCGPValuesCount = CCGPValuesCount + 1
            iterI = iterI + 1
    Next key1

1 个答案:

答案 0 :(得分:7)

您正在Key1中的 For Each key1 In CCGPValues.Keys 上运行循环,并且您在{{1}中传递 key 的分割部分}}

因此= Split(CCGPValues(key), " - ")(0)没有任何内容,因此结果数组未初始化。然后从空白数组中,您尝试读取第一个元素。所以子脚本错误。

split避免了这些令人头疼的问题。