VBA UBOUND

UBOUND o también conocida como Upper Bound, esta función en VBA se usa con su función opuesta que LBOUND o también conocida como función Lower Bound, el uso de esta función es para definir la longitud de una matriz en un código y como su nombre sugiere UBOUND se utiliza para definir el límite superior de la matriz.

Función VBA UBOUND

¿Cómo se sabe la longitud máxima de la matriz en Excel? Sí, podemos ver y actualizar manualmente la longitud máxima de la matriz, pero si lo está haciendo todo esto, hoy es el final porque tenemos una función llamada UBOUND para determinar la longitud máxima de la matriz. Siga este artículo para tener más conocimientos sobre la función UBOUND en Excel VBA.

UBOUND son las siglas de Upper Bound. A menudo, en la codificación, es posible que necesitemos encontrar la longitud máxima de la matriz. Por ejemplo, MyResult (24) significa que el nombre de la matriz MyResult contiene 25 valores porque la matriz comienza desde cero, no desde uno. Entonces 24 significa +1, es decir, 25 valores en total.

Aquí, la longitud máxima de la matriz es 24, en lugar de proporcionar la longitud de la matriz manualmente, podemos usar la función incorporada UBOUND para obtener la longitud máxima de la matriz.

El código es: UBOUND (MyResult)  es decir, UBOUND (24)

Entonces, la función Excel VBA UBOUND representa el límite superior del tamaño de la matriz.

¿Cómo usar la función VBA UBound en Excel?

La fórmula de VBA UBOUND es muy simple porque solo tiene dos parámetros.

UBound (Arrayname [, Dimension])
  • Nombre de la matriz: este es el nombre de la matriz que hemos definido. Por ejemplo, en el ejemplo anterior, MyResult es el nombre de la matriz.
  • [Dimensión]: si la matriz tiene más de una dimensión, entonces debemos especificar la dimensión de la matriz. Si lo ignora, tratará la primera dimensión de forma predeterminada.

La función Excel VBA UBOUND es muy útil para determinar la longitud de los bucles mientras se ejecutan los bucles.

Ejemplos de función UBOUND en Excel VBA

A continuación se muestran los ejemplos prácticos de la función VBA UBound.

Puede descargar esta plantilla de función VBA UBound aquí - Plantilla de función VBA UBound

Ejemplo 1

Para iniciar el procedimiento, déjeme escribir el código simple. Siga los pasos a continuación para aplicar la función VBA UBOUND.

Paso 1: Inicie la macro de Excel y defina el nombre de la variable.

Código:

 Sub Ubound_Example1 () Dim ArrayLength (0 a 4) como cadena 

Paso 2: asignaré valores a este nombre de matriz.

Código:

 Sub Ubound_Example1 () Dim ArrayLength (0 a 4) As String ArrayLength (0) = "Hola" ArrayLength (1) = "Amigo" ArrayLength (2) = "Bienvenido" ArrayLength (3) = "a" ArrayLength (4) = End Sub "Clase VBA" 

Paso 3: Ahora usando un cuadro de mensaje con función UBOUND veremos la longitud máxima de la matriz.

Código:

 Sub Ubound_Example1 () Dim ArrayLength (0 a 4) As String ArrayLength (0) = "Hola" ArrayLength (1) = "Amigo" ArrayLength (2) = "Bienvenido" ArrayLength (3) = "a" ArrayLength (4) = "Clase VBA" MsgBox "La longitud del límite superior es:" & UBound (ArrayLength) End Sub 

Paso 4: Ejecute este código presionando la tecla F5 o también puede ejecutar el código manualmente como se muestra en la siguiente captura de pantalla.

el cuadro de mensaje le mostrará el número de límite superior de la matriz se mostrará en el cuadro de mensaje.

De esta manera, usando la función UBOUND de Excel VBA, podemos obtener la longitud del límite superior de una matriz.

Ejemplo n. ° 2: uso de la función UBOUND de Excel VBA para copiar los datos

Suponga que tiene una lista de datos en una hoja de Excel como la siguiente.

Estos datos se actualizarán a diario y debe copiarlos en la nueva hoja cada vez que se actualice. Actualizar esto manualmente llevará una cantidad considerable de tiempo en su lugar de trabajo, pero le mostraré un código de macro simple para automatizar esto.

Paso 1: Cree una macro y defina la variable de matriz.

Código:

 Sub Ubound_Example2 () Dim DataRange () As Variant End Sub 

Paso 2: Ahora active la hoja de datos haciendo referencia a su nombre.

Código:

 Sub Ubound_Example2 () Atenuar DataRange () como hojas variantes ("Hoja de datos"). Activar End Sub 

Paso 3: Ahora asigne el rango de datos a la variable definida usando el siguiente código.

Código:

 Sub Ubound_Example2 () Atenuar DataRange () como hojas variantes ("Hoja de datos"). Activar DataRange = Range ("A2", Range ("A1"). End (xlDown) .End (xlToRight)) End Sub 

Paso 4: Ahora agregue una nueva hoja de trabajo al libro de trabajo.

Código:

 Sub Ubound_Example2 () Dim DataRange () como hojas de variantes ("Hoja de datos"). Activar DataRange = Range ("A2", Range ("A1"). End (xlDown) .End (xlToRight)) Worksheets.Add End Sub 

Paso 5: Ahora agregue los datos a la hoja recién agregada usando la función Excel VBA UBOUND en la forma del siguiente código.

Código:

 Sub Ubound_Example2 () Atenuar DataRange () como hojas variantes ("Hoja de datos"). Activar DataRange = Range ("A2", Range ("A1"). End (xlDown) .End (xlToRight)) Worksheets.Add Range (ActiveCell , ActiveCell.Offset (UBound (DataRange, 1) - 1, UBound (DataRange, 2) - 1)) = DataRange End Sub 

El código anterior compensará las celdas por la longitud máxima devuelta por la función UBOUND y este rango será igual al valor del nombre de la matriz " DataRange "

Paso 6: Ahora ejecute este código y pegará el valor en la nueva hoja.

This code is a dynamic one because even when the data increases horizontally and vertically it will automatically take the range. Now I will add some dummy lines to the data.

Now I will once again run this code, it will now add the newly added lines as well.

Code:

 Sub Ubound_Example2()     Dim DataRange() As Variant Sheets("Data Sheet").Activate DataRange = Range("A2", Range("A1").End(xlDown).End(xlToRight)) Worksheets.Add Range(ActiveCell, ActiveCell.Offset( UBound ( DataRange, 1 ) - 1, UBound ( DataRange, 2 ) - 1)) = DataRange Erase DataRange End Sub 

Things to Remember

  • UBOUND returns the maximum length of the array.
  • The array starts from 0, not from 1.
  • If you want the lower value of the array then you need to use VBA LBOUND.
  • If the array has more than one dimension then you need to specify the dimension number as well.