2016-02-01 56 views
2

我正在使用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

運行時錯誤'9':下標超出範圍 –

回答

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將反映新的數組上限在前面的語句設置的。

相關問題