Macro se bloquea

Hola OctavoHokage,
Antes que nada muchas gracias por la molestia de haberme preparado una macro que se adapta perfectamente a lo que estoy buscando.
La he estado poniendo en práctica. La macro funciona a la perfección si el cuadro tiene menos de 2000 líneas. El problema comienza cuando el cuadro tiene más líneas (en este momento estoy trabajando con 10000).
Basándome en tu macro, las he adaptado a mi cuadro creando entonces, una macro para operaciones de compra y otra macro para venta de acciones (como las puedes ver el excel que te estoy adjuntando).
No sé donde puede estar el error que hace que se bloquee la macro. Para describirte con más detalle el problema, el error se lo ve claro en celda BK8414. Aquí la Macro Buy debería calcular el MAX(C8414 :C8440). Sin embargo, esta se limita a tomar solo dos valores en lugar del rango mencionado.
Hay otras veces donde funciona bien. Esto lo puedes constatar, si tú miras por ejemplo en BK8244 donde no hay ningún error, y funciona como yo quisiera que funcionara en toda la hoja.
Los mismos problemas exactos tengo con la macro « Sell ». Funciona bien hasta que empieza a fallar a la hora de seleccionar el rango sobre el cual calcular el Min. Si ejecutaras la macro Sell, encontrarías el mismo problema en la celda BL6851 (por ejemplo).. En lugar de calcular el MIN(D6851 :D6992) el excel se limita a calcular solo dos celdas.
Llevo toda la tarde pensando en este tema y no le encuentro la solución desde mis elementales conocimientos en programación. Afortunadamente existen profesionales como Uds que están realmente a otro nivel y seguramente entenderás mucho más rápido que yo donde es que tengo el error.
Muchas gracias de antemano Octavo por tu atención y quedo a la espera de tus noticias.
Un cordial saludo,
Pablo Limeno
Los códigos son :
Sub Buy()
For i = 1 To 65000
a = a + 1
If Range("BH" & a).Value <> 0 Then
b = a
Do
    Do While Contador < 65000
        Contador = Contador + 1
        b = b + 1
        If Range("D" & b).Value < Range("BH" & a).Value Then
        Comprobar = False
            Exit Do
        End If
    Loop
Loop Until Comprobar = False
a = a + 1
h = "=Max(C" & a & ":C" & b & ")"
Range("BK" & a - 1).Value = h
End If
Next i
End Sub
Y PARA la macro SELL :
Sub Sell()
For i = 1 To 65000
a = a + 1
If Range("BI" & a).Value <> 0 Then
b = a
Do
    Do While Contador < 65000
        Contador = Contador + 1
        b = b + 1
        If Range("C" & b).Value > Range("BI" & a).Value Then
        Comprobar = False
            Exit Do
        End If
    Loop
Loop Until Comprobar = False
a = a + 1
h = "=Min(D" & a & ":D" & b & ")"
Range("BL" & a - 1).Value = h
End If
Next i
End Sub
He tratado de adjuntarte el archivo Excel pero no veo como...

1 Respuesta

Respuesta
1
La macro no debería caerse por tener más de 10,000 filas, ya que según como esta escrita da lo mismo que tenga 1 o tenga 65000, en esta página no puedes adjuntar archivos, unos los cuelgan en internet y otros los pasan por correo, la verdad no estoy muy seguro de las políticas sobre el correo, pero te paso mi correo para que me envíes tu archivo, yo corro la macro y miro que pasa.
[email protected]
Funciona a la perfección. Sin tu ayuda nunca lo hubiera logrado !
Además de funcionar correctamente, me has respondido rapidísimo.
Gracias nuevamente,

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas