我有以下代码在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
答案 0 :(得分:7)
您正在Key1
中的 For Each key1 In CCGPValues.Keys
上运行循环,并且您在{{1}中传递 key
的分割部分}}
因此= Split(CCGPValues(key), " - ")(0)
没有任何内容,因此结果数组未初始化。然后从空白数组中,您尝试读取第一个元素。所以子脚本错误。
split
避免了这些令人头疼的问题。