problemas con asignar una matriz a un listbox

1 post / 0 nuevos
Pedrointriago
Imagen de Pedrointriago
Offline
última acción: Hace 8 años 5 meses
alta: 20/11/2015 - 17:15
Puntos: 25
problemas con asignar una matriz a un listbox

Hola.

Ingresé a este foro y encontré una macro para llenar un listbox con una matriz. Tomé la mcaro y la adapté a lo que tengo. En mi caso quiero hacer algo un poquito diferente. Aqui pongo la macro que hice:

Private Sub TextBox1_Change()

Dim valor As Variant

Dim Hoja As String

Dim Rangoconsulta As Range

Dim columna As String

'---------------------------

Dim X, i As Integer

Dim MatrizAuxiliar() As Variant

On Error Resume Next

LstDatos.Clear

    valor = TextBox1.Value

    Cells.Find(What:=valor, after:=ActiveCell, LookIn:=xlValues, lookat _

        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _

        False, SearchFormat:=False).Activate

    Select Case CmbOpcion.ListIndex

        Case 0

            Hoja = "OFICIOS ENVIADOS"

            Set Rangoconsulta = Worksheets(Hoja).Range("a10:o1000")

            columna = "A"

        Case 1

            Hoja = "OFICIOS DESPACHADOS"

            Set Rangoconsulta = Worksheets(Hoja).Range("a10:o1000")

            columna = "A"

        Case 2

            Hoja = "OFICIOS RECIBIDOS"

            Set Rangoconsulta = Worksheets(Hoja).Range("a10:o1000")

            columna = "A"

        Case 3

            Hoja = "MEMOS ENVIADOS"

            Set Rangoconsulta = Worksheets(Hoja).Range("a10:o1000")

            columna = "A"

        Case 4

            Hoja = "MEMOS DESPACHADOS"

            Set Rangoconsulta = Worksheets(Hoja).Range("a2:o1000")

            columna = "A"

        Case 5

            Hoja = "MEMOS RECIBIDOS"

            Set Rangoconsulta = Worksheets(Hoja).Range("a10:o1000")

            columna = "A"

    End Select

        busca = ActiveCell.Column

If CmbOpcion <> "" Then

'    LstDatos.Clear

    With Sheets(Hoja)

        i = 1

        X = 0

        ReDim MatrizAuxiliar(0 To 14, 0 To X)

        Do

nxt:

           rw = .Range(.Cells(i, busca), .Cells(1000000, busca)).Find(valor, LookIn:=xlValues, lookat:=xlPart).Row

           If rw = i Then

'                LstDatos.Clear

                LstDatos.List = Application.WorksheetFunction.Transpose(MatrizAuxiliar)

                Application.ScreenUpdating = True

                GoTo totales

           End If

            ReDim Preserve MatrizAuxiliar(0 To 14, 0 To X)  'redimensionamos con una columna más

            MatrizAuxiliar(0, X) = .Cells(rw, 1)

            MatrizAuxiliar(1, X) = .Cells(rw, 2)

            MatrizAuxiliar(2, X) = .Cells(rw, 3)

            MatrizAuxiliar(3, X) = .Cells(rw, 4)

            MatrizAuxiliar(4, X) = .Cells(rw, 5)

            MatrizAuxiliar(5, X) = .Cells(rw, 6)

            MatrizAuxiliar(6, X) = .Cells(rw, 7)

            MatrizAuxiliar(7, X) = .Cells(rw, 8)

            MatrizAuxiliar(8, X) = .Cells(rw, 9)

            MatrizAuxiliar(9, X) = .Cells(rw, 10)

            MatrizAuxiliar(10, X) = .Cells(rw, 11)

            MatrizAuxiliar(11, X) = .Cells(rw, 12)

            MatrizAuxiliar(12, X) = .Cells(rw, 13)

            MatrizAuxiliar(13, X) = .Cells(rw, 14)

            MatrizAuxiliar(14, X) = .Cells(rw, 15)

            X = X + 1

            i = rw

            GoTo nxt

        Loop

    End With

Else

    LstDatos.Clear

End If

totales:

End Sub

como podrán ver lleno el listbox dependiendo de lo que escriba en el textbox en el evento change, es decir a medida que ponga una letra en el listbox aparecerán las coincidencias de lo que encuentre en la respectiva hoja que ha sido previamente escogida en un combobox.

Cuando escribo la primera letra me funciona perfectamente y el listbox se llena con todas las coincidencias, sin embargo a la segunda letra me sale este error en esta linea:

         LstDatos.List = Application.WorksheetFunction.Transpose(MatrizAuxiliar)

"sale error de coincidencia de tipos"

Me di cuenta que aparentemente se sobrecarga el listbox, así que borro el listbox del formulario y lo vuelvo a crear y nuevamente me funciona con la primera letra, pero al escribir la segunda letra vuelve a pasar lo mismo.

 

Me podrían ayudar, cual es el problema, como lo soluciono (ya llevo varios días y no encuentro la solución).

Gracias.

 

Etiquetas: