我正在使用VBA从API获取元数据并创建MetadataArray。我被困在标题上。我想检查元素是否存在于数组中,如果没有重新生成数组并添加新元素。当我运行代码时,我收到错误
运行时错误'9':下标超出范围
于:
MetadataArray(0, UBound(MetadataArray, 2) + 1) = AllIndicators(i).ChildNodes(j).BaseName
For k = 0 To UBound(MetadataArray, 2)
If MetadataArray(0, k) = AllIndicators(i).ChildNodes(j).BaseName Then
Else
ReDim Preserve MetadataArray(0 To RowCount, 0 To UBound(MetadataArray, 2) + 1)
MetadataArray(0, UBound(MetadataArray, 2) + 1) = AllIndicators(i).ChildNodes(j).BaseName
End If
Next k
答案 0 :(得分:1)
它无法正常工作的原因是您要求设置一个尚不存在的数组元素。您确实在前一个语句中为MetadataArray
创建了一个新的上限,但是在下一个语句中,您要求填充的值比上限值多1,将永远不存在。
所以改变
MetadataArray(0, UBound(MetadataArray, 2) + 1) = AllIndicators(i).ChildNodes(j).BaseName
到此:
MetadataArray(0, UBound(MetadataArray, 2)) = AllIndicators(i).ChildNodes(j).BaseName
因为UBound
将反映前一语句中数组集的新上限。