uso de arreglos en vba

2
Uso de Arreglos en VBA 06/03/2012 by Fernando Santos | 3 Comments Los arreglos son un conjunto de elementos que tienen el mismo tipo de datos y que están ordenados secuencialmente. Cada elemento de una matriz posee un número de índice único que lo identifica. Además, Los cambios efectuados a un elemento de una matriz no afectan a los demás elementos. Para definir un arreglo unidimensional se coloca lo siguiente: Dim arreglo(INTERVALO) As TIPO Donde INTERVALO indicará el menor índice y el mayor índice del arreglo. Por ejemplo, si quiero definir un arreglo que almacene 20 datos enteros (variando sus valores entre 0 y 255), entonces lo haré de la siguiente manera, Dim A(1 To 20) As Byte, esto indicará que el sistema debe separar 20 casilleros para almacenar 20 enteros de tipo Byte entre 0 y 255. Cuando quiero almacenar el valor 18 en la posición 9 del arreglo anterior “A” entonces debemos colocar A(9)=18. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 18 Para llenar un arreglo con datos desde una hoja de Excel, se usa el siguiente subprograma: Sub llena_arreglo (ByRef A() As Byte, ByVal N As Byte) Dim I As Byte For I=1 To N A(I)=Range("B"&I) Next End Sub En el programa anterior, “N” indica el número de elementos que tiene el arreglo (que no necesariamente será el número 20, pero de todas formas será un número menor igual a 20) y este número de elemento no puede ser mayor del que se colocó en la declaración del DIM usado en el Subprograma “Principal”. Es importante mencionar que para pasar como parámetro un arreglo se debe usar siempre la palabra ByRef (nunca ByVal). También debe recordarse que en un arreglo todos los datos son del mismo tipo.

Upload: felixdavidleiva6520

Post on 18-Feb-2016

218 views

Category:

Documents


0 download

DESCRIPTION

ARREGLOS EN VISUAL BASIC

TRANSCRIPT

Page 1: Uso de Arreglos en VBA

Uso de Arreglos en VBA06/03/2012 by Fernando Santos | 3 CommentsLos arreglos son un conjunto de elementos que tienen el mismo tipo de datos y que están ordenados secuencialmente. Cada elemento de una matriz posee un número de índice único que lo identifica. Además, Los cambios efectuados a un elemento de una matriz no afectan a los demás elementos. Para definir un arreglo unidimensional se coloca lo siguiente:Dim arreglo(INTERVALO) As TIPODonde INTERVALO indicará el menor índice y el mayor índice del arreglo. Por ejemplo, si quiero definir un arreglo que almacene 20 datos enteros (variando sus valores entre 0 y 255), entonces lo haré de la siguiente manera, Dim A(1 To 20) As Byte, esto indicará que el sistema debe separar 20 casilleros para almacenar 20 enteros de tipo Byte entre 0 y 255. Cuando quiero almacenar el valor 18 en la posición 9 del arreglo anterior “A” entonces debemos colocar A(9)=18.1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2018Para llenar un arreglo con datos desde una hoja de Excel, se usa el siguiente subprograma:Sub llena_arreglo (ByRef A() As Byte, ByVal N As Byte)Dim I As ByteFor I=1 To NA(I)=Range("B"&I)NextEnd SubEn el programa anterior, “N” indica el número de elementos que tiene el arreglo (que no necesariamente será el número 20, pero de todas formas será un número menor igual a 20) y este número de elemento no puede ser mayor del que se colocó en la declaración del DIM usado en el Subprograma “Principal”.  Es importante mencionar que para pasar como parámetro un arreglo se debe usar siempre la palabra ByRef (nunca ByVal). También debe recordarse que en un arreglo todos los datos son del mismo tipo.EJEMPLO: Si se desea crear un subprograma que calcule el promedio de notas de un conjunto de alumnos cuyos datos se muestran en una hoja de

Page 2: Uso de Arreglos en VBA

excel de la siguiente manera. En la celda B1 se encuentra el número de alumnos (10 alumnos), de la celda A4 a la A13 se encuentra la numeración de los alumnos, formando una columna 1,2,3,4,5…10. En la siguiente columna desde la celda B4 hasta la B13 se ubican las respectivas notas de los alumnos y finalmente en la celda E4 se encuentra el promedio de notas.Sub principal()Dim N As Byte, promedio As SingleDim A(1 To 10) As ByteN=Range("B1")Call llenar_arreglo(A,N)promedio=calc_promedio(A,N)Range("E4")=promedioEnd SubSub llenar_arreglo(ByRef A() As Byte, Byval N As Byte)Dim I As ByteFor I=1 To NA(I)=Range("B"&I+3)NextEnd SubFunction calc_promedio(ByRef A() As Byte, ByVal N As Byte) As SingleDim I As Byte, suma As Singlesuma=0For I=1 To Nsuma=suma+A(I)Nextcalc_promedio=Round((Suma/N),1)End FunctionElaborado por: Franko Vilchez Marcos