REMOVER MULTIPLOS ITENS EM LISTBOX

MARCOS1983 21/08/2013 09:43:36
#427883
Senhores, bom dia!

Possuo o procedimento abaixo que faz a exclusão de itens selecionados em um LISTBOX, porém não esta funcionando para multiplos itens. Quando seleciono 1 item, ele é removido com sucesso, quando seleciono 2 ou mais itens, ele só remove 1 não os demais. Alguém consegue avaliar o que esta errado no meu código?

Public Sub RemoverItensSelecionados()

Dim index As Integer
index = Forms!frmConsolidado.lstarquivosimportar.ListCount - 1
Do While index <> -1
If Forms!frmConsolidado.lstarquivosimportar.Selected(index) = True Then
Forms!frmConsolidado.lstarquivosimportar.RemoveItem index
End If
index = index - 1
Loop

End Sub
EPISCOPAL 21/08/2013 10:19:33
#427885
Resposta escolhida
Bom aki eu tirei o [Ô]Forms![Ô] e funcionouuuu ....
MARCOS1983 21/08/2013 10:52:44
#427889
Amigo, obrigado pela tentativa de ajudar, mas o problema ainda continua...

Esse procedimento esta dentro de um módulo, por isso o [Ô]Forms![Ô]..

Estou usando o Access 2010.. De qualquer forma, peguei o mesmo código, retirei do Módulo e coloquei ele dentro do Formulário e removi das linhas de comandos os [Ô]Forms![Ô] e o problema continua.

Para fazer o teste, precisa selecionar 2 itens (segurando o CTRL)...

Ainda assim continua o problema...
EPISCOPAL 21/08/2013 15:34:24
#427895
Olha aqui eu olhei a propriedade Multiselect = 1 ou 2 funcionouuu ...

ou Style = Checked ... funcionou também ...


Bom você está usando o vb6 sp6 ??????? o meu aqui é sp6 .......

Outro detalhe é que você mencionou o control ..... aki eu seleciono vários sem pressionar a tecla control !!!

Pode ser o sp6 mesmo ..... diga ai qual é o seu?
MARCOS1983 21/08/2013 16:34:34
#427900
O meu VBA é o 7.0
Estou com o Office 2010 com o service pack 1 aplicado

tipo de origem da linha = [Ô]Lista de Valores[Ô]
Coluna Acoplada = 0
Seleções Multiplas = Extendida (também ja testei com a simples)

A minha linha de código esta da seguinte forma:

For i = lstarquivosimportar.ListCount - 1 To 0 Step -1
If lstarquivosimportar.Selected(i) = True Then
lstarquivosimportar.RemoveItem (i)
End If
Next
MARCOS1983 21/08/2013 18:59:53
#427907
Wolffire,

Criei um arquivo com um exemplo de como esta a situação.

Vou anexá-lo...
EPISCOPAL 21/08/2013 23:01:31
#427918
caraka eu achei que fosse vb6

Vai ver que quando o listbox deleta o primeiro item ele desfaz toda a seleção ....

mas faz o seguinte ... cria uma matriz depois deleta ....


Public Sub RemoverItensSelecionados()

Dim index As Integer
Dim X As Long
Dim Matriz() As Boolean

index = frmConsolidado.lstarquivosimportar.ListCount - 1

For X = 0 To index
ReDim Preserve Matriz(X)
Matriz(X) = frmConsolidado.lstarquivosimportar.Selected(X)
Next

Do While index <> -1
If Matriz(index) = True Then
frmConsolidado.lstarquivosimportar.RemoveItem index
End If
index = index - 1
Loop

End Sub
MARCOS1983 22/08/2013 09:02:08
#427929
Wolffire,

Desse jeito funcionou, fico muito agradecido pela ajuda!!! Ja estava batendo muito a cabeça com esse item, mas desse jeito ficou perfeito !!! Ele realmente estava perdendo a seleção após deletar o primeiro, vou buscar informações do porque isso acontece e se tem alguma outra solução mas de qualquer forma a sua solução apresentada ja resolve para mim e posso prosseguir com o que estava fazendo.

Aproveitando a ocasião, ja vou deixar disponibilizado o arquivo com as sua alterações aplicadas caso um usuário do site no futuro precise de uma solução para um problema parecido...

Grande abraço!!!
Tópico encerrado , respostas não são mais permitidas