userform , listbox tablas dinamicas

2 envíos / 0 nuevos
Último envío
Kadima
Imagen de Kadima
Offline
última acción: Hace 4 años 11 meses
alta: 15/05/2019 - 01:06
Puntos: 25
userform , listbox tablas dinamicas

Hola ! podran ayudarme con este problema....no se bien porque la busqueda a traves de mi fromunalio solo capta hasta la fila 739 y no mas de ahi.

Explico, genere una tabla1, que contiene todos los elementos de consulta, carga y edicion a traves de un formulario. la consulta es por medio de un listbox que busca por like y una vez seleccionado el objeto buscado me trae sobre el formulario todos los datos.

to que he notado que pasando la fila 739 ya no me busca mas los registros... como puedo hacer que funcione?

muchas gracias

Kadima.

AdjuntoTamaño
File prueba.xlsm312.99 KB
Cron
Imagen de Cron
Offline
última acción: Hace 8 meses 3 semanas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
Tu problema es común, lo he

Tu problema es común, lo he visto más veces, y me ha ocurrido a mí también.

Estás llenando los datos del listbox con un bucle que va desde la fila 6 a la fila que sale de contar todo lo que hay en la columna 1. El problema es que tienes tres celdas vacías arriba.

Imaginemos que tuvieras 100 filas con datos. Como la tabla empieza en la fila 4, terminará 100 filas más abajo, que es en la fila 103. Si tú cuentas todo lo que hay en la columna A, te dará 100. Y si utilizas esto como límite, tu bucle irá hasta la fila 100 y te faltarán los tres últimos.

 

¿Cómo lo resolvemos?

Lo más sencillo, ya que tienes montado todo, es cambiando la línea en la que asignas 'filas'. Podrías hacer:

Filas = Range("a4").CurrentRegion.Rows.Count + 3

Siendo 3 el número de filas vacías que hay encima de tu tabla.

 

¿Cómo lo haría yo?

Declararía una variable range e iría recorriendo con ella todo el rango de la tabla. En nuestro ejemplo se llama "tabla1", aunque no sé cómo se llama en tu archivo bueno. Tendrías que mirarlo. Haría algo así:

For Each celda In ActiveSheet.ListObjects("Tabla1").ListColumns("NODO").DataBodyRange

    If LCase(celda.Value) Like "*" & LCase(Me.TextBox1.Value) & "*" Then

        Me.ListBox1.AddItem celda

        For j = 1 To 20

            Me.ListBox1.List(Me.ListBox1.ListCount - 1, j) = celda.Offset(0, j)

        Next

    End If

Next


Un saludo