No me corre código vba excel para buscar un valor en una tabla de excel!

Tengo un userform al cual le asigne un codigo vba para buscar datos en una tabla que tengo en excel, el asunto esta en que la tabla tiene 8 colmunas y en el userform inserte un combobox para que me de el nombre de las columnas y en base a la columna seleccionada en el combobox busque los datos que escriba en un textbox, se que suena algo complicado si desean el archivo con gusto se los hago llegar. Les dejo el código que no me funciona para el boton de comando BUSCAR!

Private Sub CommandButton1_Click()
On Error GoTo Errores
If Me.TXTBCC.Value = "" Then Exit Sub
Me.LISTA.Clear
Columna = Me.CMENCABEZADO.ListIndex
j = 2
Filas = Range("B4").CurrentRegion.Rows.Count
For i = 5 To Filas
    If LCase(Cells(i, j).Offset(0, CInt(Columna)).Value) Like "*" & LCase(Me.TXTBCC.Value) & "*" Then
        Me.LISTA.AddItem Cells(i, j)
        Me.LISTA.List(Me.LISTA.ListCount - 1, 1) = Cells(i, j).Offset(0, 1)
        Me.LISTA.List(Me.LISTA.ListCount - 1, 2) = Cells(i, j).Offset(0, 2)
        Me.LISTA.List(Me.LISTA.ListCount - 1, 3) = Cells(i, j).Offset(0, 3)
    Else
    End If
Next i
Exit Sub
Errores:
MsgBox "No se encuentra.", vbExclamation, "SICOPRE"
End Sub

1 Respuesta

Respuesta
1

Quizás si te comento lo que hace la macro encontrás la solución... sino enviame el libro. Los correos aparecen en mi sitio que dejo al pie.

El nro de columna es el índice del elemento seleccionado en el combobox. Es decir que si seleccionas el 2do elemento del desplegable el índice es 1.

Como el nro de columna siempre será un valor entero, NO hace falta que agregues la función CInt(Columna)

Y como j = 2 se incremente la col a partir de la 2, ¿es decir que con un índice en 1 se buscará la col 3... es correcto?

Del textbox no me ocupé, parece que es texto porque lo buscás en minúsculas...

PD) Esto es para todos los que leen las respuestas. Por favor basta de seguir utilizando instrucciones que empiezan con ME:... es es solo para ciertas situaciones. En el 90% de los casos no hace falta ;)

Si esto resuelve tu consulta no olvides valorarla (Excelente o Buena)... sino enviame el libro.

PD

Buenas tardes Elsa Matilde

Gracias por tomarte el tiempo para responder pero no logro que el código corra como lo espero!

Te envíe el libro a tu correo

Gracias de antemano por la ayuda!

Para ubicar la última fila con datos estás utilizando estas instrucciones:

Filas = Range("B4").CurrentRegion.Rows.Count 
For i = 5 To Filas

Pero la variable Filas tiene el total de filas en el rango a partir de B4. Y a eso le debes sumar las 3 primeras para obtener el total de ocupadas.

Filas = Range("B4").CurrentRegion.Rows.Count + 3
For i = 5 To Filas

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas