EXCLUIR VARIOS ITEMS DO LISTVIEW

USUARIO.EXCLUIDOS 13/01/2005 09:29:31
#60450
Olá pessoal ! Estou tentando excluir vários items selecionado no listview eu consigo só que esta retornando o erro (Run-time Error 35600- Index out of bounds) problema no loop aqui esta o código:

For iCont = 1 To .ListItems.Count
If .ListItems(iCont).Selected = True Then

(Aqui vai outros comandos)

.ListItems.Remove .ListItems(iCont).Index
.Refresh
iCont = iCont - 1

rsDeletaEmp.Close
Else
(Aqui vai outros comandos)

.ListItems.Remove .ListItems(iCont).Index
.Refresh
iCont = iCont - 1

rsDeletaEmp.Close
End If
Next

Se alguém poder me ajudar agradeço.
Valeu
Max
THIAGO.CESAR 13/01/2005 10:03:03
#60467
Resposta escolhida
Cara, é o seguinte:
Você tem 100 linhas, e joga um For pra executar de 1 a 100
Excluiu 1 linha, você tem 99 linhas!
Ele nunca vai achar o ListView.ListItem(100), eu acho que é isso que tá acontecendo!
THIAGO.CESAR 13/01/2005 10:05:22
#60468
Remova de baixo para cima com um loop inverso

For iCont = ListItems.Count to 1
(...)
Next -1
THIAGO.CESAR 13/01/2005 10:19:46
#60472
Utilize esta função:
Remover ListView1

Sub RemoverSelecionados(ctlListView As ListView)
Dim i As Long
i = ctlListView.ListItems.Count
Do While i >= 1
If ctlListView.ListItems(i).Checked Then ctlListView.ListItems.Remove (i)
i = i - 1
Loop
End Sub

USUARIO.EXCLUIDOS 13/01/2005 12:42:27
#60509
valeu galera resolvi o problema com condicional While ex:
While .ListItems.Count <> iCont
iCont = iCont + 1

[Comandos]

.ListItems.Remove .ListItems(iCont).Index
.Refresh
iCont = iCont - 1
Wend
Tópico encerrado , respostas não são mais permitidas