Notifications
Clear all

erro 380 ao Transferir ListBox's

7 Posts
2 Usuários
0 Reactions
1,841 Visualizações
(@laeoli)
Posts: 85
Trusted Member
Topic starter
 

Boa Noite!

Tenho uma rotina para transferir de uma listBox1 para ListBox2 e vice-versa, porém identifiquei uma possibilidade de erro, pois, se o usuário clicar em uma das list Box quando esta estiver vazia dá erro 380 "Não foi possível obter a propriedade list. Indice de Matriz de propriedade inválido.

se alguém sobre de algo ... por favor, solicito ajuda!

Obrigado!

 
Postado : 27/12/2013 5:42 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Como pode haver vários motivos para gerar o erro, seria melhor postar seu arquivo modelo.

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 27/12/2013 5:48 pm
(@laeoli)
Posts: 85
Trusted Member
Topic starter
 

Olá Ale,

segue o code:

Private Sub Image1_Click()

Item = ListBox1.ListIndex 'captura a posição da linha selecionada para copiar os dados a serem transferidos
posicao = ListBox2.ListCount 'conta quantos dados tem na listbox2 para inserir os dados na posição correta

'MsgBox Item & " e " & posicao
If ListBox1 = "" Then

Exit Sub
Else
With ListBox2

    .AddItem
    .List(posicao, 0) = (Me.ListBox1.List(Item, 0))
    .List(posicao, 1) = (Me.ListBox1.List(Item, 1))
    .List(posicao, 2) = (Me.ListBox1.List(Item, 2))
    
End With

Me.ListBox1.RemoveItem (Me.ListBox1.ListIndex)


Dim SOMA As Double

For i = 0 To ListBox2.ListCount - 1
SOMA = SOMA + ListBox2.List(i, 2)

Next i
'Me.ListBox1.Clear
txt_total = FormatNumber(SOMA, 2)

End If

End Sub
 
Postado : 27/12/2013 5:56 pm
(@laeoli)
Posts: 85
Trusted Member
Topic starter
 

Bom Dia!

Navegando pelas terras do Tio San encontrei a linha codigo abaixo, embora me atenda, ao transferir 2 colunas da ListBox1 para ListBox2, preciso fazer uma autosoma na coluna 2 e não estou conseguindo. Se alguém puder me ajudar ...

Dim i  As Long
    Dim Duplicate As Boolean
     
    If Me.ListBox1.Text <> "" Then
        For i = 1 To Me.ListBox2.ListCount
            If Me.ListBox2.List(i - 1) = Me.ListBox1.Column(0, _
            Me.ListBox1.ListIndex) & vbTab & _
            Me.ListBox1.Column(1, Me.ListBox1.ListIndex) Then
                 'Duplicate Entry
                Duplicate = True
                Exit For
            End If
        Next i
        If Duplicate = False Then
            Me.ListBox2.AddItem Me.ListBox1.Column(0, _
            Me.ListBox1.ListIndex) & vbTab & _
            Me.ListBox1.Column(1, Me.ListBox1.ListIndex)
         
        End If
    End If

Obrigado!

 
Postado : 28/12/2013 3:53 am
(@laeoli)
Posts: 85
Trusted Member
Topic starter
 

A quem Interessar:

para resolver o problema 380 na ListBox1 acrescentei 1 linha de código no Userform Initialize para manter a linha selecionada:
ListBox1.Selected(ListBox1.ListCount - 1) = True

e para impedir que a listBox1 torne a ficar vazia e o problema se repita coloquei o seguinte codigo (após o end with) no botão transferir para a direita:

Item = ListBox2.ListIndex 'captura a posição da linha selecionada para copiar os dados a serem transferidos
posicao = ListBox1.ListCount 'conta quantos dados tem na listbox2 para inserir os dados na posição correta

'MsgBox Item & " e " & posicao

With ListBox1
    .AddItem
    .List(posicao, 0) = (Me.ListBox2.List(Item, 0))
    .List(posicao, 1) = (Me.ListBox2.List(Item, 1))
    .List(posicao, 2) = (Me.ListBox2.List(Item, 2))
End With
If ListBox2.ListIndex = 0 Then Exit Sub
 ListBox2.RemoveItem ListBox2.ListIndex


'Me.ListBox2.RemoveItem (Me.ListBox2.ListIndex)


Dim SOMA As Double

For i = 0 To ListBox2.ListCount - 1
SOMA = SOMA + ListBox2.List(i, 2)
Next i

txt_total = FormatNumber(SOMA, 2)

End Sub

todavia ainda não consegui editar o transferir para esquerda. Se alguém puder ajudar fico agradecido!

 
Postado : 28/12/2013 5:54 am
(@laeoli)
Posts: 85
Trusted Member
Topic starter
 

Método de tentativa e erro, depois de muita procura encontrei a solução:

On Error Resume Next

inseri dentro da condição with. Vai gerar linhas vazias se o usuário clicar ininterruptamente no botão transferir porém só exclui-las.

ps.: um pouco frustrado. Será que ninguém sabia disso antes???

 
Postado : 28/12/2013 7:25 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Caso seja necessário reabrir o tópico, o autor poderá enviar uma MP para um dos moderadores solicitando o desbloqueio.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 28/12/2013 10:05 am