2012-12-28 11 views
0

我寫了下面的代碼,根據一維數組中某些元素的匹配從ArrayList對象中刪除了一些元素。但得到一個錯誤Non-negetive number requiredArrayListTaskDetails.RemoveRange RemovePosition, 4。但我知道的是IndexOf()返回0 - based索引時發現匹配和-1爲不匹配。那麼爲什麼錯誤即將到來?VBSCript錯誤爲「需要非需要的數字」

代碼:

For IndexSearch = Lbound(VMHArray) To Ubound(VMHArray) 
    Do Until ArrayListTaskDetails.IndexOf(VMHArray(IndexSearch), 0) <> -1 
     RemovePosition = ArrayListTaskDetails.IndexOf(VMHArray(IndexSearch), 0) 
     ArrayListTaskDetails.RemoveRange RemovePosition, 4 
    Loop 
Next 
+0

這是VBA還是vbscript?無論如何,我認爲你想把'until'改爲'While'或將'<>'改成'='。最後,你想完成什麼?代碼看起來相當困惑。您正在查詢列表以查找索引IndexSearch處的項目的索引。這沒有道理;這就像問「位於大街1號的建築物的地址是什麼?」。 – phoog

+0

@phoog我用'直到'的意圖,因爲任何數組元素可以不止一次出現在ArrayList中。但是根據IndexOf()的'MSDN'定義,它會返回第一個找到的'0'索引,'-1'返回不匹配,那麼除了'-1'這樣的'negetive number'怎麼會出現?任何想法? Id使用'while'後,我不能刪除ArrayList中存在的數組元素,只有一個將被刪除,我相信。糾正我如果我錯了! –

+0

@phoog我同意你的觀點,但我所做的錯誤是錯誤地放置了'<>'而不是'='。我剛剛糾正了它。現在希望它會起作用。 –

回答

1

確定, 「無厘頭」 我的評論的一部分是錯誤的;我誤解了這個例子。

發生了什麼:Do Until X表示評估X,如果結果爲false,則執行循環體。因此,IndexOf顯然返回-1,「Until」條件評估爲false,循環體執行,RemovePosition等於-1。這解釋了錯誤。

+0

是啊!你是對的,我修好了!感謝您的努力和幫助! :-) –

+0

我在其他部分有另一個錯誤,我可以繼續在這裏或不同的職位,你會suugest? –

+0

@VBSlover如果這是另一部分的另一個錯誤,那應該是一個新問題。 – phoog