Como hacer para que me lea hasta la ultima fila, porque no me deja!

Tengo una base de datos que funciona bastante bien, pero tengo un par de problemas que no se realmente como solucionarlos, el tema es que busco en la base de datos con un filtro, este me arroja una lista de equipos que cumplen determinados requerimientos, después le paso un segundo filtro para una selección más fina, funciona pero hay valores que toma y otros que no y además de contador de filas para obtener la última fila de la tabla se para a la mitad y no sigue, la verdad no se que hacer.

2 Respuestas

Respuesta

Podrías poner el código para que lo viéramos.

Así de principio parece que tu contador empieza a contar por la fila 1 y cuando encuentra una celda vacía se para. Para evitar esto, se selecciona un fila muy lejana y se "tira" hacia arriba hasta encontrar una celda no vacía. Esa fila son las celdas totales a evaluar

Puedes usar esto:

Sheets("Hoja1").Range("A" & Rows. Count).End(xlUp). Row 

Este es el código que uso en el botón, no se porque pero se detiene en la fila 18 sin motivo alguno.

Private Sub CommandButton6_Click()
Dim ulti, H, Q As Integer
Dim ulticeldas, I, J, K, A, F, Y As Variant

Sheets("Hoja2").Select
range("Q10:AX86").Select 'Selecciona los valores de la hoja 2
Selection.Copy 'Copia los valores de la hoja 2
Sheets("Hoja3").Select 'Selecciona la hoja 3
range("A9").Select
ActiveSheet.Paste 'Pega los valores de la hoja 2
Sheets("Hoja2").Select
ulticeldas = Sheets(2).Cells(Rows.Count, 10).End(xlUp).Row
H = Sheets(1).range("D4").Value
Q = Sheets(1).range("C4").Value
Y = 8
Sheets("Hoja2").Select
For I = 10 To ulticeldas
J = 17
K = 34
F = 0
Do Until J = 33
If Sheets(2).Cells(I, J).Value >= H And Sheets(2).Cells(I, K).Value >= Q Then
Sheets(2).Cells(I, J).Interior.ColorIndex = 36
Sheets(2).Cells(I, K).Interior.ColorIndex = 36
F = F + 1
End If
J = J + 1
K = K + 1
Loop
If F > 0 Then
Y = Y + 1
Sheets(2).Select
range(Cells(I, "A"), Cells(I, "AX")).Copy
Sheets("Hoja4").Activate
Cells(Y, "A").Select
'pego la fila que hemos copiado
ActiveSheet.Paste
End If
Next I
Sheets(1).Select
End Sub

Prueba a cambiar

ulticeldas = Sheets(2). Cells(Rows. Count, 10).End(xlUp). Row

por

ulticeldas = Sheets(2).Range("J" & Rows.Count).End(xlUp).Row  

No paso nada, se clava nuevamente en la fila 18 y tengo equipos como hasta la fila 23, el tema es que el filtro me tira los equipos que cumplen determinados requerimientos, entonces yo pruebo por ahora siempre con el mismo para que me tire siempre la misma cantidad, pero la cantidad de filas son variables, por que si cambio los requerimientos me tira otra cantidad, el tema es que si esa cantidad pasa la fila 18 a partir de esta corta y deja de comprar.

Pon msgbox ulticeldas despues de 

ulticeldas = Sheets(2). Cells(Rows. Count, 10).End(xlUp). Row

a ver que numero da

Respuesta

.08.02.17

Hola, Sergio

Probá con lo siguiente:

- Sacá los filtros de esa base. No digo que liberes la selección sino que los quites.

-Después parate en cualquier registro de esa base y aplica filtro automático de nuevo.

Si no hay lineas vacías intermedias, deberá afectar a toda tu base. Si las hubiere y fueran necesarias, seleccioná todo el rango a filtrar ANTES de aplicar el filtro automático para que las incluya.

Suele pasar que tenés un filtro automático colocado y, al agregar datos nuevos no los considera dentro de ese rango

Un abrazo

Fernando

(Buenos Aires, Argentina)

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas