Jump to content

Error 6: desbordamiento


Recommended Posts

Hola a todos!

Tengo un error de desbordamiento en un fichero de registro de entrada de documentación y control de sus procesos, en las macros, excepto en la de "Entrada". No consigo ver dónde casca.

Además, en la macro de entrada, comienza a buscarme la última celda a escribir, y cuando hay muchas tarda mucho. Esto lo puedo arreglar poniendo que comience en lugar desde A1 desde A1000, pero dentro de un tiempo me cascará de nuevo.

Os dejo el fichero por si pudieras echarle un vistazo.

Gracias.

Registro Contratación Vida.zip

Link to comment
Share on other sites

Hola Pablolin

El desbordamiento puede ser posible no por la cantidad de celdas que se recorren si no por el modo en que se hace.

Hay una linea para evitar la actualización de pantalla ,es decir anular todos los movimientos que realiza la macro ,como seleccionar,ocultar,copiar etc...

Si no se aplpica en códigos que producen mucho movimiento se consumen muchos recursos y el código no es admisible.

En el archivo adjunto tienes el código modificado.

Dentro del código está explicada cada linea ,ya verás que tampoco hace falta un bucle para encontrar la ultima celda vacía.

Registro Contratación Vida 1.rar

Link to comment
Share on other sites

_

Te dejo las macros corregidas:


Dim f As Long
'---------------------------------------------
Sub salida()
Application.ScreenUpdating = False
For f = 2 To Range("A" & Rows.Count).End(xlUp).Row
If Range("A" & f) = Range("H2") Then
Range("C" & f) = Range("C2")
Range("H" & f) = Now
Exit For
End If
Next
End Sub
'---------------------------------------------
Sub ADVANCE()
Application.ScreenUpdating = False
For f = 2 To Range("A" & Rows.Count).End(xlUp).Row
If Range("A" & f) = Range("H2") Then
Range("I" & f) = "ADV"
Range("K" & f) = Now
Exit For
End If
Next
End Sub
'---------------------------------------------
Sub Incidencia()
Application.ScreenUpdating = False
For f = 2 To Range("A" & Rows.Count).End(xlUp).Row
If Range("A" & f) = Range("H2") Then
Range("I" & f) = "INC"
Range("K" & f) = Now
Exit For
End If
Next
End Sub
'---------------------------------------------
Sub Vuelta()
Application.ScreenUpdating = False
For f = 2 To Range("A" & Rows.Count).End(xlUp).Row
If Range("A" & f) = Range("H2") Then
Range("K" & f) = Now
Exit For
End If
Next
End Sub
'---------------------------------------------
[/CODE]

Link to comment
Share on other sites

Hola Pablolin

Para evitar el desbordamiento:

Tienes declaradas las variables mD,f y r como rango

En la variable mD no se le asigna bien el rango ,tienes que modificar la línea:.

mD = Range("A1").CurrentRegion

por

Set mD = Range("A1").CurrentRegion

Edito:.

Entro la respuesta de Macro Antonio mientras respondía ,no vi la respuesta:.

Lo dejo para que qpuedas corregir en futuras macros el problema.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

Privacy Policy