Vídeo recomendado
https://youtu.be/diWPPPhW-9E

ERRO EM TEMPO DE EXECUÇÃO 381

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
Vagnfer
Acabou de chegar
Acabou de chegar
Mensagens: 6
Registrado em: Seg Abr 15, 2019 3:35 pm

ERRO EM TEMPO DE EXECUÇÃO 381

Mensagem por Vagnfer »

"ERRO EM TEMPO DE EXECUÇÃO 381
NÃO FOI POSSÍVEL OBTER A PROPRIEDADE LIST. ÍNDICE DE MATRIZ DE PROPRIEDADE INVÁLIDO "

Tem outro modo de escrever esse comando ??



Private Sub ListBox3_Change()
TextBox_grupo_altera.Text = ListBox3.List(ListBox3.ListIndex, 0)
TextBox_tipo_altera.Text = ListBox3.List(ListBox3.ListIndex, 1)
TextBox_data_altera.Text = ListBox3.List(ListBox3.ListIndex, 2)
TextBox_valor_altera.Text = ListBox3.List(ListBox3.ListIndex, 3)
TextBox_obs_altera.Text = ListBox3.List(ListBox3.ListIndex, 4)

End Sub


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


srobles
Jedi
Jedi
Mensagens: 805
Registrado em: Qua Mai 06, 2015 7:39 pm

Re: ERRO EM TEMPO DE EXECUÇÃO 381

Mensagem por srobles »

Vagnfer,

O controle ListBox possui as 5 colunas habilitadas?
Pois se houverem apenas 4 colunas por exemplo, a ultima vai gerar este tipo de erro por não existir.

Elaborei um modelo aqui, e em meus testes não enfrentei erros de nenhum tipo utilizando esse evento do ListBox.

Se puder, disponibilize um modelo compactado (.zip ou .rar) com dados ficticios, para que possamos analisar

PS : Durante testes, me deparei com o erro citado quando limpei o conteúdo do ListBox. Ao limpar (e acredito que ao remover itens) o ListBox gera o evento Change, ocasionando o erro.
Se este for o seu cenário, temos 2 possibilidades mais práticas :

1) Tratar o erro, exemplo :

Código: Selecionar todos

Private Sub ListBox1_Change()
   On Error Goto trataerro
   TextBox1 = ListBox3.List(ListBox3.ListIndex, 0)
   TextBox2 = ListBox3.List(ListBox3.ListIndex, 1)
   TextBox3 = ListBox3.List(ListBox3.ListIndex, 2)
   TextBox4 = ListBox3.List(ListBox3.ListIndex, 3)
   TextBox5 = ListBox3.List(ListBox3.ListIndex, 4)
   
trataerro:
   If Err = 381 then
      TextBox1 = ""
      TextBox2 = ""
      TextBox3 = ""
      TextBox4 = ""
      TextBox5 = ""
   End If
End Sub

2) Validar a quantidade de itens no ListBox :

Código: Selecionar todos

Private Sub ListBox1_Change()
    With Me
        If .ListBox1.ListCount = 0 Then
            .TextBox1 = ""
            .TextBox2 = ""
            .TextBox3 = ""
            .TextBox4 = ""
            Exit Sub
        Else
            .TextBox1 = .ListBox1.List(.ListBox1.ListIndex, 0)
            .TextBox2 = .ListBox1.List(.ListBox1.ListIndex, 1)
            .TextBox3 = .ListBox1.List(.ListBox1.ListIndex, 2)
            .TextBox4 = .ListBox1.List(.ListBox1.ListIndex, 3)
        End If
    End With
End Sub
Espero ter ajudado.

Abs


Responder