lunes, 4 de agosto de 2014

Reseteando el Rango Usado (UsedRange).

Hoy solucionaremos un problema que, en ocasiones, encontramos en nuestras hojas de cálculo de Excel: El Rango Usado (UsedRange) no responde a la realidad, habiéndose incrementado en demasía.
Lo que podría no tener importancia inicialmente, nos lleva a un tamaño del fichero desmedido, y lo peor, los procesos de cálculo se ralentizan tremendamente...
Una señal clara que tenemos esta situación es fijarnos en las barras de desplazamiento, si éstas no se mueven de manera proporcional a lo que esperamos, probablemente signifique que nuestro UsedRange ha crecido.
Verifica la situación presionando Ctrl+Fin y comprueba dónde te lleva dentro de tu hoja...

Así pues, se hace necesario conocer la manera de 'resetear' el Rango Usado y que tome el tamaño justo.

Lo primero es que debemos saber qué pude generar esta situación.
En ocasiones insertamos/escribimos en alguna celda y luego la suprimimos. Esto es la causa más frecuente. Excel guarda en su memoria que esa celda ha sido empleada, y por tanto la localiza como la 'última celda'.
Otras causas es la mala costumbre de señalar filas o columnas completas y aplicar algún tipo de formato!!. Y es que el formato tiene el mismo resultado que si hubieras escrito en esas celdas.
DE igual manera con los Formatos condicionales.


¿Cómo evitar esta situación?.
En un primer intento realizaríamos los siguientes pasos:
1- presionar Ctrl+Fin para que nos lleve a la Última Celda, si no es realmente nuestra última celda empleada, buscaremos cuál es realmente, y situándonos un fila por debajo y una columna a la derecha, a continuación, seleccionando todas las columnas a la derecha hasta el final presionaremos Eliminar (método abreviado: Ctrl + -); de igual modo con todas las filas hacía abajo hasta la última de la hoja. (Para esta selección emplea el modo Final).
2- Guardar y Salir del fichero.
3- Al volver a entrar el problema estará solucionado. Esto suele ser suficiente... pero cuando no lo sea, tocará realizar un pequeño procedimiento Sub.


Un segundo intento algo más infalible (no totalmente!!) es emplear una sencilla macro.
Dentro del proyecto de VBA de nuestro Libro de trabajo, dentro del Editor de VB, en la Hoja que tenga el problema (NO en un módulo!!!):

Sub ResetUsedRange()
    'resetea la última celda usada!!
    Application.ActiveSheet.UsedRange
End Sub


Tras ejecutar la macro, si todo ha ido bien, comprobaremos que se ha reseteado la situación, y la última celda ahora es la que corresponde...

OJO!!, es preferible emplear la línea de código con el término Application, ya que es menos probable que falle que haciéndolo sólo con ActiveSheet.UsedRange
Por tanto, respecto al procedimiento:
1- insertarlo en la ventana de código de la Hoja afectada
2- emplear la instrucción: Application.ActiveSheet.UsedRange


Veamos la situación...

Reseteando el Rango Usado (UsedRange).



Recordemos estos procesos no son infalibles.. por desgracia, en alguna ocasión me he topado con una hoja en la que fallaban los métodos expuestos.
:-(

2 comentarios:

Nota: solo los miembros de este blog pueden publicar comentarios.