VBA, Filtrar Datos en una columna dependiendo de un dato en otra

Tengo el siguiente código:

Private Sub Creditos_Cancelados()
'Selecciona la Region De Trabajo
Sheets("Cierre Diario").Activate
Dim i As Integer, nfilas As Integer
nfilas = ActiveSheet.Cells(1, 1).CurrentRegion.Rows.Count
'reconoce los datos para el trabajo
qCol = ("AY:AY")
qCrit = ("X:X")
'Ejecutamos el Bucle
For i = nfilas To 2 Step -1
    Cells(i, qCol).Select
        If Cells(i, qCol) <= Cells(i, qCrit) Then
            ActiveCell.EntireRow.Select
            Selection.Delete
        End If
    Next i
End Sub

Pero me da error 6 (que es como el equivalente a que la base es demasiado grande)

Alguien conoce como hacer que funcione con una base que va de la A1:GS46000

La probé con una base más pequeña y funciono a la perfección, pero la necesito con una que llegue a superar las 90,000 Filas

Respuesta
2

Esto es porque declaraste la variable 'nfilas' como Integer. Debes declararla como Long

Sdos. Y no olvides valorar las respuestas (opciones: excelente o buena)

1 respuesta más de otro experto

Respuesta

Como estás, tal cual lo expresa la excelente respuesta brindada, al declarar interger el bucle irá de 1 a 32767 ya que la variable interger oscila entre

Entre -32768 y 32767

long oscila entre

 -2.147.483.648 y 2.147.483.647

Ten presente que si usa excel 64 bits debes declarar la variable long como 

dim i as longlong

O bien usar al principio de la macro código para evitar incompatibilidades, es decir si se ejecuta en 64 bits usara longlong si se usa en 32 bits long

También puedes declarar la variable como variant

Dim i As Integer, nfilas As Integer

Dim i as Variant
[url=https://programarexcel.com/]
https://programarexcel.com[/url] 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas