VBA UsedRange

UsedRange, como su nombre indica, son los rangos que, como algún tipo de valores en ellos, las celdas vacías no están incluidas en los rangos usados, por lo que en VBA Los rangos usados ​​son la propiedad del objeto de rango en VBA para esos rangos de celdas en filas y columnas que no están vacías y tienen algunos valores.

UsedRange en VBA Excel

El UsedRange en VBA es una propiedad de la hoja de trabajo que devuelve un objeto de rango que representa el rango usado (todas las celdas de Excel usadas o completadas en una hoja de trabajo) en una hoja de trabajo en particular. Es una propiedad que representa el área cubierta o delimitada por la celda usada superior izquierda y la última celda usada derecha en una hoja de trabajo.

Podemos describir 'Celda usada' como una celda que contiene cualquier fórmula, formato, valor, etc. También podemos seleccionar la última celda usada presionando las teclas CTRL + FIN en el teclado.

A continuación se muestra una ilustración de UsedRange en una hoja de trabajo:

Podemos ver en la captura de pantalla anterior que el UsedRange es A1: D5.

Ejemplos de la propiedad UsedRange de Excel VBA

Veamos algunos ejemplos a continuación para ver cómo se puede usar la propiedad UsedRange en una hoja de trabajo para encontrar el rango usado en VBA:

Puede descargar esta plantilla de Excel de VBA UsedRange aquí - Plantilla de Excel de VBA UsedRange

Ejemplo 1

Supongamos que tenemos un archivo de Excel que contiene dos hojas de trabajo, y deseamos encontrar y seleccionar el rango usado en Sheet1.

Veamos qué contiene Sheet1:

Usamos la propiedad UsedRange en la ventana inmediata de VBA para realizar esta tarea. La ventana inmediata de VBA es una herramienta que ayuda a obtener información sobre archivos de Excel, ejecutar o depurar rápidamente cualquier código de VBA, incluso si el usuario no está escribiendo ninguna macros. Se encuentra en el Editor de Visual Basic y se puede acceder a él de la siguiente manera:

  • Vaya a la pestaña Desarrollador Excel y luego haga clic en Editor de Visual Basic, o presione Alt + F11 para abrir la ventana del Editor de Visual Basic.

Al hacer esto, se abre una ventana de la siguiente manera:

  • Presione Ctrl + G para abrir la ventana inmediata y escriba el código.

La ventana inmediata se ve así:

  • El siguiente código seleccionará el rango usado en Sheet1

Código:

? Worksheets ("Sheet1"). Activar True? ActiveSheet.UsedRange.Select True

La primera declaración del código activará la Hoja1 del archivo y la segunda declaración seleccionará el rango utilizado en esa hoja activa.

Al escribir este código, vemos que el rango utilizado en Sheet1 se selecciona de la siguiente manera:

Ejemplo # 2

Ahora, digamos en este ejemplo que deseamos encontrar el número total de filas utilizadas en Sheet1.Para hacer esto, seguimos los siguientes pasos:

  • Cree un nombre de macro en el módulo.

Código:

 Sub TotalRows () End Sub 

  • Defina la variable TotalRow como Integer en VBA:

Código:

 Sub TotalRows () Dim TotalRow como entero End Sub 

  • Ahora asigne la variable TotalRow con la fórmula para calcular un número total de filas:

Código:

 Sub TotalRows () Dim TotalRow As Integer TotalRow = ActiveSheet.UsedRange.Rows.Count End Sub 

  • Ahora, el valor resultante de TotalRow se puede mostrar y devolver usando un cuadro de mensaje VBA (MsgBox) de la siguiente manera:

Código:

 Sub TotalRows () Dim TotalRow As Integer TotalRow = ActiveSheet.UsedRange.Rows.Count MsgBox TotalRow End Sub 

  • Ahora ejecutamos este código manualmente o presionando F5, y obtenemos el número total de filas utilizadas en Sheet1 que se muestran en un cuadro de mensaje de la siguiente manera:

Entonces, podemos ver en la captura de pantalla anterior que se devuelve '5' en el cuadro de mensaje, y como podemos ver en Sheet1, el número total de filas en el rango usado es 5.

Ejemplo # 3

Del mismo modo, si deseamos encontrar el número total de columnas utilizadas en Sheet1, seguiremos los mismos pasos que antes, excepto por un ligero cambio en el código de la siguiente manera:

Código:

 Sub TotalCols () Dim TotalCol As Integer TotalCol = ActiveSheet.UsedRange.Columns.Count MsgBox TotalCol End Sub 

Ahora, cuando ejecutamos este código manualmente o presionando F5, obtenemos el número total de columnas utilizadas en Sheet1 que se muestran en un cuadro de mensaje de la siguiente manera:

Entonces, se devuelve '4' en el cuadro de mensaje y, como podemos ver en la Hoja1, el número total de columnas en el rango usado es 4.

Ejemplo # 4

Ahora, digamos que deseamos encontrar el último número de fila y columna usado en la Hoja2 del archivo. Veamos qué contiene Sheet2:

Para ello, seguimos los siguientes pasos:

  • Cree un nombre de macro en el módulo.

Código:

 Sub LastRow () End Sub 

  • Defina la variable LastRow como Integer.

Código:

 Sub LastRow () Atenuar LastRow como entero End Sub 

  • Ahora asigne la variable LastRow con la fórmula para calcular el último número de fila utilizado:

Código:

 Sub LastRow () Dim LastRow As Integer LastRow = ActiveSheet.UsedRange.SpecialCells (xlCellTypeLastCell) .Row End Sub 

El método SpecialCells en Excel VBA devuelve un objeto de rango que representa solo los tipos de celdas especificadas. La sintaxis del método SpecialCells es:

RangeObject.SpecialCells (tipo, valor)

En el código anterior, xlCellTypeLastCell: representa la última celda del rango utilizado.

Nota: 'xlCellType' incluso incluirá celdas vacías que hayan cambiado el formato predeterminado de cualquiera de sus celdas.
  • Ahora, el valor resultante del número de LastRow se puede mostrar y devolver mediante un cuadro de mensaje (MsgBox) de la siguiente manera:

Código:

 Sub LastRow () Dim LastRow As Integer LastRow = ActiveSheet.UsedRange.SpecialCells (xlCellTypeLastCell) .Row MsgBox LastRow End Sub 

  • Ahora ejecutamos este código manualmente o presionando F5, y obtenemos el último número de fila usado en Sheet2 que se muestra en un cuadro de mensaje de la siguiente manera:

Entonces, podemos ver en la captura de pantalla anterior que se devuelve '12' en el cuadro de mensaje y, como podemos ver en Sheet2, el último número de fila utilizado es 12.

De manera similar, si deseamos encontrar el último número de columna utilizado en Sheet2, seguiremos los mismos pasos que el anterior, excepto por un ligero cambio en el código de la siguiente manera:

Código:

 Sub LastCol () Dim LastCol As Integer LastCol = ActiveSheet.UsedRange.SpecialCells (xlCellTypeLastCell) .Column MsgBox LastCol End Sub 

Ahora, cuando ejecutamos este código manualmente o presionando F5, obtenemos el último número de columna utilizado en Sheet2 que se muestra en un cuadro de mensaje de la siguiente manera:

Entonces, podemos ver en la captura de pantalla anterior que se devuelve '3' en el cuadro de mensaje, y como podemos ver en Sheet2, el último número de columna utilizado es 3.

Cosas para recordar sobre VBA UsedRange

  • VBA UsedRange es un rango rectangular.
  • VBA UsedRange incluye celdas que tienen datos o están formateadas, etc.
  • Excel VBA UsedRange no incluye necesariamente la celda superior izquierda de la hoja de trabajo.
  • UsedRange no necesariamente considera la celda activa como usada.
  • UsedRange se puede usar para encontrar la última fila usada en VBA y para restablecer el rango usado, etc.
  • Presionar las teclas de acceso directo de Excel CTRL + MAYÚS + ENTRAR en un teclado se puede usar para extender la selección desde una celda activa hasta la última celda usada en una hoja de trabajo.