Error 381 listbox.list VBA

0

Hello! Basically I need to add the values from the listbox, but my program is displaying the following error.

Run-time error '381': The List property could not be obtained. Invalid property array index.

Private Sub TextBox1_AfterUpdate()

Dim linhalistbox As Integer
Dim linha As Integer
Dim i As Integer
Dim soma As Integer

linhalistbox = Me.ListBox1.ListCount
linha = 2
i = 0

Do Until Plan2.Cells(linha, 1) = ""                         'Loop vai rodar ate encontrar uma celula vazia na coluna dos codigos
    If TextBox1.Text = Plan2.Cells(linha, 1) Then           'Se o textbox1(codigo) for igual ao codigo da celula
        With Me.ListBox1
        .AddItem
        .List(linhalistbox, 0) = linhalistbox + 1           'Coluna 1 do listbox = ao contador de linha do listbox
        .List(linhalistbox, 1) = Plan2.Cells(linha, 3)      'Coluna 2 do listbox = ao descrição do produto
        .List(linhalistbox, 2) = Plan2.Cells(linha, 4)      'Coluna 3 do listbox = ao valor do produto
        Do Until Me.ListBox1.List(i, 2) = ""                'ERRO 
            soma = Me.ListBox1.List(i, 2) + soma            'Soma os valores dentro das celulas da coluna 2
            i = i + 1
        Loop
        TextBox2.Text = linhalistbox + 1                    'Numero de itens
        TextBox5.Text = Plan2.Cells(linha, 4)               'Mostra o valor do produto
        TextBox6.Text = soma                                'Apresenta o sub total
        linhalistbox = linhalistbox + 1
        End With
    End If
    linha = linha + 1
Loop

TextBox1.Text = ""

End Sub
    
asked by anonymous 08.09.2018 / 00:55

1 answer

0

The error occurs because there is no item in the list. So either you add an item to the top of the list and there will be a null line, with:

Me.ListBox1.AddItem and checks to see if it is null with: Do Until IsNull(Me.ListBox1.List(i, 2))

Or loop with: Do Until i = linhalistbox + 1

Code Do Until IsNull(Me.ListBox1.List(i, 2))

Dim linhalistbox As Long
Dim linha As Long
Dim i As Long
Dim soma As Double
Dim ws As Worksheet

Set ws = ThisWorkbook.Worksheets("Planilha2")
linhalistbox = Me.ListBox1.ListCount
linha = 2
i = 0
Me.ListBox1.AddItem
Do Until ws.Cells(linha, 1) = ""             'Loop vai rodar ate encontrar uma celula vazia na coluna dos codigos
    If Me.TextBox1.Text = ws.Cells(linha, 1) Then 'Se o textbox1(codigo) for igual ao codigo da celula
        With Me.ListBox1
            .AddItem
            .List(linhalistbox, 0) = linhalistbox + 1 'Coluna 1 do listbox = ao contador de linha do listbox
            .List(linhalistbox, 1) = ws.Cells(linha, 3) 'Coluna 2 do listbox = ao descrição do produto
            .List(linhalistbox, 2) = ws.Cells(linha, 4) 'Coluna 3 do listbox = ao valor do produto
            Do Until IsNull(Me.ListBox1.List(i, 2))    'ERRO
                soma = Me.ListBox1.List(i, 2) + soma 'Soma os valores dentro das celulas da coluna 2
                i = i + 1
            Loop
            TextBox2.Text = linhalistbox + 1 'Numero de itens
            TextBox5.Text = ws.Cells(linha, 4) 'Mostra o valor do produto
            TextBox6.Text = soma             'Apresenta o sub total
            linhalistbox = linhalistbox + 1
        End With
    End If
    linha = linha + 1
Loop
TextBox1.Text = ""

Code Do Until i = linhalistbox + 1

Dim linhalistbox As Long
Dim linha As Long
Dim i As Long
Dim soma As Double
Dim ws As Worksheet

Set ws = ThisWorkbook.Worksheets("Planilha2")
linhalistbox = Me.ListBox1.ListCount
linha = 2
i = 0

Do Until ws.Cells(linha, 1) = ""             'Loop vai rodar ate encontrar uma celula vazia na coluna dos codigos
    If Me.TextBox1.Text = ws.Cells(linha, 1) Then 'Se o textbox1(codigo) for igual ao codigo da celula
        With Me.ListBox1
            .AddItem
            .List(linhalistbox, 0) = linhalistbox + 1 'Coluna 1 do listbox = ao contador de linha do listbox
            .List(linhalistbox, 1) = ws.Cells(linha, 3) 'Coluna 2 do listbox = ao descrição do produto
            .List(linhalistbox, 2) = ws.Cells(linha, 4) 'Coluna 3 do listbox = ao valor do produto
            Do Until i = linhalistbox + 1    'ERRO
                soma = Me.ListBox1.List(i, 2) + soma 'Soma os valores dentro das celulas da coluna 2
                i = i + 1
            Loop
            TextBox2.Text = linhalistbox + 1 'Numero de itens
            TextBox5.Text = ws.Cells(linha, 4) 'Mostra o valor do produto
            TextBox6.Text = soma             'Apresenta o sub total
            linhalistbox = linhalistbox + 1
        End With
    End If
    linha = linha + 1
Loop
TextBox1.Text = ""
    
12.09.2018 / 22:23