REMOVER MULTIPLOS ITENS EM LISTBOX
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
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
Bom aki eu tirei o [Ô]Forms![Ô] e funcionouuuu ....
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...
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...
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?
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?
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
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
Wolffire,
Criei um arquivo com um exemplo de como esta a situação.
Vou anexá-lo...
Criei um arquivo com um exemplo de como esta a situação.
Vou anexá-lo...
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
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
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!!!
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