Saltar al contenido

Error 6: desbordamiento


Recommended Posts

publicado

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

publicado

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

publicado

Muchas gracias!

He probado lo que dices, y para dar entrada va perfector, pero en las otras macros (Advance, Incidencia, Salida...) me sigue dando el preblema de desbordamiento...

:upset:

publicado

_

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]

publicado

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.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.