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...
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 de Enrique Bernal
1