Documente Academic
Documente Profesional
Documente Cultură
ejemplos
Que es un array vba en Excel?
Arrays vba en Excel, en espaol matriz o arreglo es una lista de elementos de iguales caractersticas
agrupadas bajo una sola variable (igual tipo de datos y nombre) . Cada elemento de un array vba se
diferencia mediante un sub ndice, por ejemplo nombre (1), nombre (2), nombre (3), etc y se utiliza para
declarar con una sola variable un conjunto de datos evitando de esta forma crear tantas variables como
elementos tenga el array.
Si hasta el momento has entendido poco o nada sobre arrays vba en Excel,
entonces te lo explico a travs de ejemplos:
A(I)=Range("B"&I+3)
Next
End Sub
Function calc_promedio(ByRef A() As Byte, ByVal N As Byte) As Single
Dim I As Byte, suma As Single
suma=0
For I=1 To N
suma=suma+A(I)
Next
calc_promedio=Round((Suma/N),1)
End Function
Arrays dinmicos
Ya he hablado anteriormente de los arrays. La mayora de los lenguajes de
programacin utilizan los arrays que, recordemos es un conjunto de elementos que
tienen en comn un nombre aunque entre ellos son diferentes. Por ejemplo el array
dgitos estara compuesto por las cifras 0,1,2,3,4,5,6,7,8 y 9. Cada uno de ellos irn
referidos con un ndice. As supongamos el array compuesto por los meses del ao:
Podr observar que entre parntesis he colocado 11 y no 12, ya que, por defecto los
subndices de los arrays de VBA empiezan en 0 (que es el lmite inferior de la matriz). Si
deseamos que comience en 1 en vez de en 0, incluiremos antes del primer array y
antes del primer procedimiento las expresin:
Option Base 1
Ahora bien que haramos si no conociramos de antemano la dimensin de nuestra
array? Para ello podemos declarar un array dinmico dejando el parntesis en blanco en
la sentencia Dim:
Dim miArray( ) as Double
Una vez que conozcamos el nmero de elementos que necesitamos usaremos la
sentencia Redim para sealar el nmero de subndices necesarios. Por ejemplo:
Redim mi Array(102)
Sub tabla_multiplicar()
Dim i, j As Byte
Dim myarray As Variant
myarray = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
Range(a1:a10).Value = Application.WorksheetFunction.Transpose(myarray)
Range(a1:j1).Value = myarray
Range(a1:a10).Font.ColorIndex = 5
Range(a1:j1).Font.ColorIndex = 5
For i = 1 To 10
For j = 1 To 10
Cells(i, j) = Cells(1, j) * Cells(i, 1)
Next j
Next i
End Sub
Como se habr podido observar despus de declarar dos variables byte, la i y la j,
hemos declarado nuestra matriz con el nombre de myarray y tipo Variant. En
principio todos los elmentos de un array deben ser del mismo tipo, el hecho de
declararlos de tipo Variante nos facilita mezclar elementos de diferente tipo e incluso
incluir otras arrays. Seguidamente hemos definido los elementos de nuestra matriz con
la siguiente declaracin:
myarray = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
Con la siguiente lnea invocamos una funcin de Excel la transposicin de matrices. O
sea intercambiar filas por columnas:
Range(a1:a10).Value = Application.WorksheetFunction.Transpose(myarray)
Con ello conseguimos escribir en forma de columna nuestra matriz fila. A continuacin
insertamos los valores de la misma matriz en la fila 1
Range(a1:j1).Value = myarray