2016-10-26 61 views
0

我不擅長在vb6中使用msflexgrid,我如何刪除或解決錯誤「下標超出範圍」。在我的代碼中。請幫我解決這個錯誤。先謝謝你。MSFlexgrid中的下標超出範圍

With flxData(0) 
    For i = 1 To .Rows - 1 
    Do While cboselect <> .TextMatrix(i, 1) 
     .RemoveItem (i) 
    Loop 
    Next i 
End with 
+1

要縮進代碼,只要確保每行有4個空格前綴。 – Herb

+2

一旦你刪除了一行,隨後的行將被重新編號,所以當你到達for循環的結尾時,Rows-1將不再存在。嘗試運行你的for循環'向後':'對於我=。行 - 1到1步-1' – MarkL

+0

感謝您的回覆MarkL,我試過你的建議,但我仍然得到同樣的錯誤。 – Jmark

回答

1

就意識到Do While環路For循環內將導致錯誤顯示 - 一旦某行不具有所需cboselect值,它會調用RemoveItem對於這一點,所有的剩餘行,直到它被全部刪除,然後當它試圖刪除(現在)不存在的行時,它會顯示消息。

我猜你想要刪除與cboselect值不匹配的行,因此需要使用If語句。您也需要向後運行For循環。試試這個:

With flxData(0) 
    For i = .Rows - 1 to 1 Step -1 
    If cboselect <> .TextMatrix(i, 1) Then 
     .RemoveItem (i) 
    End If 
    Next i 
End With