Obtenga la longitud del array en VBA

Glen Alfaro 30 enero 2023
  1. Obtenga la diferencia del índice más alto y más bajo para obtener la longitud del array en VBA
  2. Use la función de hoja de trabajo COUNTA para obtener la longitud del array en VBA
Obtenga la longitud del array en VBA

Las matrices son herramientas populares en la programación de computadoras en las que puede guardar la información necesaria para su uso posterior o durante la ejecución del código. En casi todos los lenguajes de programación informática, los arrays están incluidos en su librería ya que la necesidad de guardar y recuperar información es a veces inevitable.

En VBA, obtener la longitud de un array significa contar el número de un elemento presente dentro del array. Para hacer esto, debe conocer los elementos más bajos y más altos del índice. Entonces, la diferencia entre el más alto y el más bajo sería la longitud del array.

Además, puede usar la función de la hoja de trabajo COUNTA para obtener la misma información.

Este tutorial utiliza la diferencia de índice más alta/más baja y la función de hoja de trabajo COUNTA para obtener la longitud en un array de VBA.

Obtenga la diferencia del índice más alto y más bajo para obtener la longitud del array en VBA

La lógica de este método es que podemos obtener la longitud del array restando el índice más bajo al índice más alto y luego sumando 1. Agregamos 1 ya que es necesario incluir el índice más bajo en la longitud del array.

El siguiente bloque de código demostrará cómo obtener la longitud del array de un array de un array de longitud fija. Tenga en cuenta que obtener solo el índice más alto para obtener la longitud del array no siempre es correcto, ya que hay casos en los que el índice más bajo no es igual a 0 y podría comenzar con índices diferentes.

Sub ArrayLengthDemo()

Dim stringArr(5 To 9) As String

stringArr(5) = "Glen"
stringArr(6) = "Yumi"
stringArr(7) = "Myla"
stringArr(8) = "Katrina"
stringArr(9) = "Jose"

Debug.Print "The array length of stringArr is " UBound(stringArr) - LBound(stringArr) + 1
End Sub

Salida ArrayLengthDemo:

The array length of stringArr is  5

El bloque de código a continuación demostrará cómo obtener la longitud del array de un array de un array dinámica.

Sub ArrayLengthDemo()

Dim StringArr As Variant

StringArr = Array("Glen", "Yumi", "Katrina", "Myla", "Jose")

Debug.Print "The array length of StringArr is "; UBound(StringArr) - LBound(StringArr) + 1

End Sub

Salida ArrayLengthDemo:

The array length of stringArr is  5

Se demostrará la implementación de funciones para obtener la longitud del array en el siguiente código. Será útil si la necesidad de obtener la longitud del array es recurrente.

Además, el siguiente código tiene una lógica adicional para detectar si la matriz que se va a medir es nula.

Public Function GetArrayLength(arr As Variant) As Integer
   If IsEmpty(arr) Then
      GetArrayLength = 0
   Else
      GetArrayLength = UBound(arr) - LBound(arr) + 1
   End If
End Function

Sub GetArrayLengthDemo1()


Dim stringArr(5 To 9) As String

stringArr(5) = "Glen"
stringArr(6) = "Yumi"
stringArr(7) = "Myla"
stringArr(8) = "Katrina"
stringArr(9) = "Jose"

Debug.Print "The array length is " & GetArrayLength(stringArr)

End Sub

Sub GetArrayLengthDemo2()

Dim NullArr As Variant

Debug.Print "The array length is " & GetArrayLength(NullArr)

End Sub

Salida GetArrayLengthDemo1:

The array length is 5

Salida GetArrayLengthDemo2:

The array length is 0

Use la función de hoja de trabajo COUNTA para obtener la longitud del array en VBA

un array es una colección de elementos estructurados de una manera única o multidimensional. Puede utilizar la función de hoja de trabajo COUNTA para contar estos elementos en una sola línea de código.

El siguiente bloque de código demuestra cómo obtener la longitud del array utilizando la función de hoja de trabajo COUNTA.

Sintaxis:

WorksheetFunction.CountA([ arrayName ])

Parámetro:

[arrayName] el array a medir

La función de la hoja de trabajo COUNTA está limitada solo a 30 elementos. Si se trata de un array grande, se sugiere el primer método.

Sub ArrayLengthDemo()

Dim stringArr(5 To 9) As String

stringArr(5) = "Glen"
stringArr(6) = "Yumi"
stringArr(7) = "Myla"
stringArr(8) = "Katrina"
stringArr(9) = "Jose"

Debug.Print "The array length of stringArr is " & WorksheetFunction.CountA(stringArr)
End Sub

Salida ArrayLengthDemo:

The array length of stringArr is 5
Sub ArrayLengthDemo()

Dim StringArr As Variant

StringArr = Array("Glen", "Yumi", "Katrina", "Myla", "Jose")

Debug.Print "The array length of StringArr is " & WorksheetFunction.CountA(stringArr)

End Sub

Salida ArrayLengthDemo:

The array length of stringArr is  5 

Artículo relacionado - VBA Array