Función Excel VBA UBound
¿Con qué frecuencia se le ocurre una situación en la que necesita mencionar la longitud máxima o el límite superior de una matriz de datos que funciona con Excel? La mayoría de las veces, ¿verdad? ¿Y cómo encuentras lo mismo? Quizás manualmente la mayor parte del tiempo. Sin embargo, puede automatizarlo y obtener la longitud máxima o el límite superior de una matriz utilizando una función VBA llamada UBound.
Además, tiene la forma más hermosa de recorrerlo. Por ejemplo, si está utilizando un bucle For en su matriz, definitivamente desea hacer un bucle con todos los elementos de la matriz. En ese caso, sería un trabajo tedioso encontrar el límite superior manualmente y mencionarlo en el bucle. También reducirá la generalidad del código. Por lo tanto, la función VBA UBound es útil en tales escenarios.
UBound significa límite superior y proporciona el límite superior o la longitud máxima de la matriz en Excel VBA.
Fórmula para la función UBound en Excel VBA
La función Excel VBA UBound tiene la siguiente sintaxis.
UBound (nombre de matriz (, dimensión))
Dónde,
- Arrayname: nombre de la matriz que ha definido. Este argumento es obligatorio / obligatorio.
- Dimensión: argumento opcional que especifica la dimensión de una matriz. Ya sea una matriz unidimensional, bidimensional o multidimensional. Por defecto, asumirá la matriz unidimensional si no se especifica.
Como esta función tiene solo dos argumentos, se hace mucho más fácil recordar la sintaxis de esta función.
¿Cómo utilizar la función Excel VBA UBound?
Aprenderemos cómo usar una función VBA UBound con algunos ejemplos en Excel.
Puede descargar esta plantilla VBA UBound Excel aquí - Plantilla VBA UBound ExcelEjemplo # 1 - VBA UBound con matriz unidimensional
Siga los pasos a continuación para usar la función UBound en VBA.
Paso 1: en la pestaña Desarrollador, haga clic en Visual Basic para abrir el Editor VB.
Paso 2: haga clic en Insertar y seleccione la pestaña Módulo para agregar un nuevo módulo en blanco a VBE.
Paso 3: en el VBE, comience a escribir la macro y defina el nombre de la variable.
Código:
Sub Onedm_Ubound () Dim IndiaCity (4) como Subcadena Fin Sub
Aquí la variable IndiaCity se define con 5 elementos. El tipo de variable es una cadena.
Nota: La matriz comienza desde 0 (cero). Por lo tanto, esta matriz constará de 5 elementos.Paso 4: Asignar valores a los elementos de la matriz.
Código:
Sub Onedm_Ubound () Dim IndiaCity (4) As String IndiaCity (0) = "Mumbai" IndiaCity (1) = "Bengaluru" IndiaCity (2) = "Hyderabad" IndiaCity (3) = "Delhi" IndiaCity (4) = "Pune "Fin Sub
Aquí, el elemento zeroth tiene un valor asignado como "Mumbai", el primer elemento tiene un valor asignado como "Bengaluru" y así sucesivamente.
Paso 5: Use la función UBound junto con MsgBox para obtener el límite superior de la matriz.
Código:
Sub Onedm_Ubound () Dim IndiaCity (4) As String IndiaCity (0) = "Mumbai" IndiaCity (1) = "Bengaluru" IndiaCity (2) = "Hyderabad" IndiaCity (3) = "Delhi" IndiaCity (4) = "Pune "MsgBox" Upper Bound para Array es: "& UBound (IndiaCity) End Sub
Paso 6: Ejecute este código presionando F5 directamente o presionando manualmente el botón Ejecutar en el panel superior izquierdo. Aparecerá un cuadro de mensaje con el mensaje " Upper Bound for the Array is: 4 ".
Tenga en cuenta que la función UBound no encuentra el límite superior de los elementos de Array. Simplemente descubre el número máximo de elementos que contiene la matriz.
Ejemplo # 2 - VBA UBound con matriz bidimensional
Siga los pasos a continuación para usar la función UBound en VBA.
Paso 1: defina una variable que pueda contener datos bidimensionales.
Código:
Sub TwoDm_UBound () Dim Array_Test (0 a 6, 1 a 8) como subcadena Fin Sub
Paso 2: defina un nuevo mensaje variable y úselo en MsgBox. Esta variable nos ayudará a imprimir los límites superiores de ambas dimensiones simultáneamente.
Código:
Sub TwoDm_UBound () Dim Array_Test (0 a 6, 1 a 8) como String Dim Message MsgBox Message End Sub
Paso 3: Ahora, intente las siguientes declaraciones que permiten que el sistema imprima ambas dimensiones de la matriz en el mismo cuadro de mensaje.
Código:
Sub TwoDm_UBound () Dim Array_Test (0 a 6, 1 a 8) Como String Dim Message Message = "El límite superior para la primera dimensión es:" & UBound (Array_Test, 1) & vbCrLf Message = Message & "El límite superior para la segunda dimensión es : "& UBound (Array_Test, 2) & vbCrLf MsgBox Message End Sub
Las dos declaraciones mencionadas en el código anterior permiten que el sistema imprima ambas dimensiones en el mismo cuadro de mensaje. La primera instrucción almacena el valor del límite superior para la primera dimensión en mensaje variable y finaliza la línea (vbCrLf). La segunda instrucción agrega el primer valor asignado a la variable Mensaje y lo combina con el límite superior de las segundas dimensiones con un mensaje emergente.
Como vbCrLf se usa en ambas declaraciones, funciona como nueva línea / retorno de carro aquí en ambas declaraciones.
Paso 4: Ejecute el código presionando F5 o el botón Ejecutar y vea la salida.
En líneas similares, podemos ir hasta varias dimensiones y ver el límite superior de cada una de ellas.
Ejemplo # 3 - Función UBound para actualizar los datos en la hoja automáticamente
Supongamos que tiene un conjunto de datos como se muestra en la siguiente captura de pantalla.
Estos datos se actualizan y debe copiar los datos actualizados de vez en cuando. Ahora, es realmente un trabajo tedioso verificar siempre las actualizaciones de datos y luego copiarlo en la nueva hoja. También consume mucho tiempo. ¿Podemos intentar automatizarlo usando la función UBound en VBA? Veamos.
Siga los pasos a continuación para actualizar los datos en la hoja automáticamente utilizando la función VBA UBound:
Paso 1: Defina una variable creando una macro.
Código:
Sub Ex3_UBound () Dim DataUpdate () como variante Fin Sub
Paso 2: active la hoja de trabajo que contiene sus datos. En este caso, el nombre de la hoja es " Datos ".
Código:
Sub Ex3_UBound () Dim DataUpdate () como hojas de variantes ("Datos"). Activar End Sub
Paso 3: Asigna el rango a la variable que acabamos de crear. Utilizaremos el rango de hojas activadas para este propósito.
Código:
Sub Ex3_UBound () Dim DataUpdate () como hojas de variantes ("Datos"). Active DataUpdate = Range ("A2", Range ("A1"). End (xlDown) .End (xlToRight)) End Sub
Paso 4: Agregue una nueva hoja de trabajo a su Excel, donde los datos actualizados se pueden copiar y pegar.
Código:
Sub Ex3_UBound () Dim DataUpdate () como hojas de variantes ("Datos"). Active DataUpdate = Range ("A2", Range ("A1"). End (xlDown) .End (xlToRight)) Worksheets.Add End Sub
Paso 5: Ahora, use la siguiente línea de código que permite que los datos de la hoja "Datos" se copien y peguen automáticamente en una hoja de Excel recién creada.
Código:
Sub Ex3_UBound () Dim DataUpdate () como hojas de variantes ("Datos"). Active DataUpdate = Range ("A2", Range ("A1"). End (xlDown) .End (xlToRight)) Worksheets.Add Range (ActiveCell, ActiveCell.Offset (UBound (DataUpdate, 1) - 1, UBound (DataUpdate, 2) - 1)) = DataUpdate End Sub
El código anterior compensará las celdas desde la hoja "Datos" hasta el límite superior que puede obtenerse mediante la función UBound utilizada y asigna el rango a la variable DataUpdate.
Paso 6: Ejecute el código presionando F5 o el botón Ejecutar y vea la salida.
Como puede ver, hay una nueva hoja agregada en el Libro de Excel donde todos los datos de la hoja "Datos" se copian automáticamente.
Este es un código dinámico. Lo que quiero decir es dinámico, aunque añado columnas y filas, se copiará automáticamente en una nueva hoja.
Paso 7: agreguemos algunas filas y columnas a los datos y veamos si realmente funciona.
Paso 8: presiona el botón Ejecutar nuevamente después de actualizar la hoja de datos y ver la magia.
Si puede ver, se agrega una nueva hoja (coloreada) y también se agrega una nueva columna de Edad junto con dos nuevas filas en esa hoja. Significa que, independientemente de lo que actualicemos en el archivo maestro (Datos), este código copiará automáticamente todo de eso y lo pegará en una nueva hoja.
Cosas para recordar
- UBound proporciona el límite superior / longitud máxima de una matriz y no el límite superior de los puntos de datos presentes en una matriz.
- La matriz siempre comienza desde la posición 0 como paralela a la mayoría de los lenguajes de programación como C, C ++, Python.
- Si su matriz es multidimensional, también debe especificar el argumento de la dimensión que toma valores enteros numéricos como 1, 2, 3, etc. 1 representa One-Dimension, 2 para Two-Dimensional, etc.
Artículos recomendados
Esta es una guía de la función VBA UBound. Aquí discutimos cómo usar la función Excel VBA UBound junto con algunos ejemplos prácticos y una plantilla de Excel descargable. También puede consultar nuestros otros artículos sugeridos:
- Función dividida de VBA con ejemplos
- Función mayúscula de Excel
- VBA Match
- Función de TECHO en Excel
- ¿Cómo usar las hojas de trabajo de VBA?