Error en propiedad listbox en vba

Tengo un problema con el listbox, me sale que tengo un Error 381 en tiempo de ejecución:

No se puede obtener la propiedad list. Índice de propiedades de matríz no válido.

En lo que he buscado para corregir este error, me sale que es por que el número máximo de columnas tiene que ser 10 (Iniciando desde el 0 hasta llegar al 9), pero es este casp tengo 8 columnas y me sigue apareciendo el error, al momento de picarle depurar me especifica el error en esta parte:. Range("A9"). Value = Lista. List(a, 0).

Les anexo una parte del código pro si me pueden ayudar! Gracias

Private Sub Cbcatalogo_Change()

Application. ScreenUpdating = False

Dim Fila, a As Integer

Dim dato, var As String

Lista. Clear

Lista. ColumnCount = 8

A = 1

Fila = 8

While Sheets("Producto"). Cells(Fila, 5) <> Empty

Dato = Cbcatalogo

Var = Sheets("Producto"). Cells(Fila, 5)

If var = dato Then

A = Lista. ListCount

Lista. AddItem

'Área

Lista. List(a, 0) = Sheets("Producto"). Cells(Fila, 1)

'Producto

Lista. List(a, 1) = Sheets("Producto"). Cells(Fila, 2)

'Código DNA

Lista. List(a, 2) = Sheets("Producto"). Cells(Fila, 6)

'Marca

Lista. List(a, 4) = Sheets("Producto"). Cells(Fila, 4)

'Proveedor

Lista. List(a, 3) = Sheets("Producto"). Cells(Fila, 3)

'Tamaño

Lista. List(a, 5) = Sheets("Producto"). Cells(Fila, 7)

'Descripción

Lista. List(a, 6) = Sheets("Producto"). Cells(Fila, 8)

'Costo

Lista. List(a, 7) = Sheets("Producto"). Cells(Fila, 9)

End If

Fila = Fila + 1

Wend

Application. ScreenUpdating = True

End Sub

Private Sub CommandButton1_Click()

If Cbcatalogo. Text = "" Then

MsgBox ("No se han registrado datos")

Lista. Clear

Txtpresentacion. Text = ""

Txtcantidad. Text = ""

Txtlote. Text = ""

Txtcaducidad. Text = ""

Txtllegada. Text = ""

Txtmin. Text = ""

Cbcatalogo. SetFocus

Else

A = Lista. ListIndex

With Sheets("Inventario (almacén)")

. Rows("9:9"). Insert Shift:=xlUp

. Rows("9:9"). Interior. Pattern = xINone

. Range("A9"). Value = Lista. List(a, 0)

. Range("B9"). Value = Lista. List(a, 1)

. Range("D9"). Value = Lista. List(a, 2)

. Range("C9"). Value = Lista. List(a, 4)

. Range("E9"). Value = Lista. List(a, 5)

. Range("F9"). Value = Lista. List(a, 6)

. Range("H9"). Value = Lista. List(a, 7)

. Range("G9"). Value = Txtpresentacion. Text

. Range("K9"). Value = Txtcantidad. Text

. Range("L9"). Value = Txtlote. Text

. Range("M9"). Value = Txtcaducidad. Text

. Range("N9"). Value = Txtllegada. Text

. Range("P9"). Value = Txtmin. Text

ActiveWorkbook. Save

Sheets("Inventario (almacén)"). Select

End With

Cbcatalogo. Text = ""

Lista. Clear

Txtpresentacion. Text = ""

Txtcantidad. Text = ""

Txtlote. Text = ""

Txtcaducidad. Text = ""

Txtllegada. Text = ""

Txtmin. Text = ""

Cbcatalogo. SetFocus

Sheets("Inventario (almacén)"). Select

End If

End Sub

Respuesta

[Hola 

cambia esto 

a = Lista.ListCount 

por esto 

a = Lista.ListCount - 1

1 respuesta más de otro experto

Respuesta
1

Lista. Listindex funciona así en cuanto tu seleccionas un valor del listbox el listindex le asigna un valor partiendo desde 0 por ejemplo 0,1,2,3... y asu sucesivamente según la intentar del registro seleccionado cuando no seleccionas nada el valor es de -0, y como en Excel las filas y columnas parten de 1 entonces por eso te aparece el error, me imagino que tratas de copiar lo que hay en el listbox a otra hoja y lo digo suponiendo porque no tienes un ciclo para hacerlo, resumiendo para que no te error debes seleccionar un registro del listbox

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas