Está en la página 1de 30

IE 212: Métodos Computacionales para

Ingeniería Industrial

Lecture Notes # 6:
Procedimientos de funciones y matrices

Saeed Ghanbartehrani
verano 2015

Visión de conjunto

La organización de los procedimientos Sub

Crear procedimientos de funciones

Métodos para pasar variables en procedimientos Sub y
Function

Procedimientos públicos y privados

Utilizar matrices en Excel VBA

Resumen

2

La organización de los procedimientos
Sub

Debe grupo de diversas acciones en varios
procedimientos sub más pequeños en lugar de tener un
procedimiento sub grande en el que todo el programa
está escrito
– Permite a los programas se ejecuten de manera más eficiente
– Promueve la reutilización del código

La estructura del módulo ideal para su programa es
tener una Principal() procedimiento sub desde el que se
llaman otros procedimientos sub
– Esta Principal macro suele asignarse a un botón de "Inicio" en
la hoja de "bienvenida"

Para llamar a otro procedimiento sub, utilizamos el
comando Llamada seguido3 del nombre del

)  Por ejemplo. considere tres procedimientos diferentes subsistemas. llamado GetInput (). y DisplayResults ()  entonces podemos llamar a estos tres procedimientos de la sub Principal() procedimiento sub de la siguiente Sub Principal() llame GetInput Los cálculos de llamadas DisplayResults de llamadas End Sub  También puede llamar a otros procedimientos Sub En estos tres procedimientos sub 4 . Cálculos ().La organización de los procedimientos Sub (Cont.

Procedimientos de función  UN procedimiento de función es un tipo de procedimiento que puede tomar argumentos y ejecutar una serie de instrucciones  Un procedimiento de función difiere de un procedimiento secundario en ese – Se invoca a través de su nombre – Se devuelve un solo valor  Los elementos críticos cuando se escribe un procedimiento de función – los nombre de la función de – los tipo de la función de 5 .

Procedimientos de función (Cont. End Function 6 ....)  Sintaxis de un procedimiento de función Función Nombre ([arglist]) [declaraciones] [Name = expresión] [Función Salir] [declaraciones] [Name = expresión] End Function  Un procedimiento de función se puede llamar desde cualquier procedimiento Sub o cualquier otro procedimiento de función Función Nombrefunción () .

)  Para ilustrar la apropiado El uso de una función en Excel VBA.Procedimientos de función (Cont. utilizaremos un ejemplo donde se calcula la suma de los dos valores – Usaremos AddTwoNumbers como el nombre de la función 7 .

debe asignar un valor a la nombre del procedimiento de función  las variables x y y en este ejemplo no se tienen que declarar – Son las variables utilizadas en todo el procedimiento de función 8 .Procedimientos de función (Cont.)  La función en sí es bastante simple en este caso  Para devolver un valor desde una función en Excel VBA.

que se limitaría a solamente pasan las variables de ese tipo de datos – Función AddTwoNumbers (x As Integer.)  las variables x y y en la función de AddTwoNumbers asumirá los respectivos tipos de datos asignados a un y segundo – Si hubiéramos definido la función AddTwoNumbers con tipos de datos en el argumento. y como número entero)  Nótese también que los nombres de las variables utilizadas como argumentos cuando se invoca la función y los nombres de las variables utilizadas en el estado procedimiento de función no tienen que ser los mismos – un y segundo en el procedimiento Sub – x y y en procedimiento Function 9 .Procedimientos de función (Cont.

el valor original de la variable permanece intacta 10 .Métodos para pasar variables  Hay dos métodos para pasar variables en los procedimientos sub funciones y procedimientos – Por referencia (defecto) – por valor  Pasando un valor por referencia implica que el procedimiento (o función) pueden acceder y posiblemente modificar el valor original asignado a la variable  Paso por valor proporciona una copia del valor de la variable para el procedimiento o función para utilizar – Por lo tanto.

ByVal y) AddTwoNumbers = x + y End Function  Alternativamente. j)  procedimiento Sub Resultado = Multiplicar ((a). Debemos usar la palabra clave ByVal la hora de definir los argumentos que la función se llevará a Función AddTwoNumbers (ByVal x. una variable puede ser pasado por valor encerrándolo entre paréntesis cuando el procedimiento Sub o función se ha llamado Llamada Multiplicar ((i).)  Para pasar una variable por valor. (b))  procedimiento Function 11 .Métodos para pasar variables (Cont.

Procedimientos públicos y privados  El alcance de un procedimiento secundario. puede también definirse como Público o Privado  UN privado procedimiento sub es declarado por poner la palabra Privado antes de Sub declaración – Privado procedimientos sub sólo pueden ser llamados desde los procedimientos en el mismo módulo – Privado procedimientos sub no se muestran cuando se intenta ejecutar una macro en Excel  UN público procedimiento sub se puede llamar desde cualquier otro procedimiento – La palabra Público se puede poner delante de la Sub declaración. como una variable. o la Sub declaración se puede escribir sin una declaración anterior 12 .

Utilizar matrices en Excel VBA 13 .

si conocemos la salida de un programa será de 3 variables enteras. podemos almacenar estos valores en una matriz de enteros de tamaño 3  El conjunto de elementos de datos almacenados en un array debe todos de la mismo tipo de datos 14 .Introducción a las matrices en Excel VBA  tienda de matrices serie de elementos de datos que pueden ser manipulados o referencia más adelante – Las matrices son muy útiles cuando tenemos que realizar la misma operación (o una serie de operaciones) en un grupo de valores – Las matrices también pueden hacer que los programas más compacto (y posiblemente más eficiente)  Por ejemplo.

declarar arrays  Para declarar una matriz. Que contiene 10 elementos del tipo de datos Doble. en algunos casos. la tamaño de la matriz) Se incluye en la declaración de variables – Oscuro stdNames (10) Como cuerda – Oscuro stdGrades () como enteros  Así es como la matriz unidimensional TempData. o Público puede ser usado  VBA reconocerá una variable como un conjunto y no una variable escalar debido a un conjunto de paréntesis (y. Se declara – Oscuro TempData (9) como doble 15 . las palabras clave de declaración de variables Dim. Private.

declarar arrays (Cont. un único número es todo lo que es necesario especificar el tamaño  Declarar multidimensional arrays. 3) como doble 16 .)  Para una matriz unidimensional. separados por una coma – Oscuro datos (2. filas y columnas). Es necesario especificar el tamaño de cada dimensión (es decir.

un índice predeterminado se asigna a cada elemento  El índice de morosidad del primer elemento en una matriz unidimensional es 0  El índice de morosidad del primer elemento en una matriz de dos dimensiones es 0.Índices Arrays '  Se puede hacer referencia a los elementos individuales en una matriz mediante una valor del índice – Cuando se declara una matriz en Excel VBA.0 17 .

)  Ejemplos expData ( ) = myOSUCourses ( . ) = 18 .Índices Arrays ' (Cont.

Resultados (12) como doble  Si desea mantener el índice inicial por defecto como 0 pero me gustaría una matriz específica para comenzar con un índice diferente. los resultados (12) como doble – Oscuro matriz (1 A 20.)  Se puede indicar a Excel VBA para cambiar los valores del índice por defecto de todas las matrices en el módulo con la instrucción Option Base 1 – Tablas unidimensionales comenzará a las 1 – Dos matrices unidimensionales comenzará a las 1. 1 A 10) como doble 19 .1 Option Base 1 Oscuro datos (10) como doble. puede especificar el valor del índice de partida en la declaración de matriz – Oscuro datos (1 A 10) As Long.Índices Arrays ' (Cont.

debe ser coordinada con la variable de contador utilizado en Para el siguiente bucles por i = 1 A 13 Resultados (i) = valor siguiente yo 20 .)  En el último caso. acaba de ser conscientes del tamaño de la matriz – Oscuro resultados (2-13) como doble – size = índice de límite superior .Índice límite inferior + 1  Sea cual sea el valor del índice inicial es elegido.Índices Arrays ' (Cont.

Índices Arrays ' (Cont. 1) LBound (A. 0 a 3) como entero LBound (A. 2) 21 .)  Función LBound – Devuelve una Largo que contiene el más pequeño subíndice disponible para la dimensión indicada de una matriz – Sintaxis  LBound (arrayname [. 1) UBound (A. 2) UBound (A. dimensión]) Dim A (1 a 100. dimensión])  Función UBound – Devuelve una Largo que contiene la mayor subíndice disponible para la dimensión indicada de una matriz – Sintaxis  UBound (arrayname [.

nos escriba por i = LBound (datos) A UBound (datos) 22 . para asignar un valor del 10.5 al tercer miembro de la matriz de datos (9). Nos escriba  de datos (2) = 10.Actualizan matrices con valores  Para asignar un valor de un elemento específico de la matriz. es más práctico utilizar una Para el siguiente bucle con una variable de contador  Por ejemplo. para establecer cada elemento de la matriz de datos (9) igual a su número de índice. se utiliza el índice del elemento – Por ejemplo.5  Para configurar varios valores de una matriz.

)  Para asignar valores a los elementos de un array multidimensional o para buscar un valor. debe hacer lo siguiente: 0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 8 9 0 2 4 6 8 10 12 14 di 18 ec is éi s 0 3 6 9 12 15 18 21 24 27 23 . para establecer el valor de cada elemento de la matriz de dos dimensiones datos (4. el uso anidado Para el siguiente bucles con diferentes variables de control  Por ejemplo.Actualizan matrices con valores (Cont. 9) igual al producto de sus índices.

se puede utilizar una matriz dinámica declaración – Por ejemplo. el tamaño de la matriz no se especifica y los paréntesis están vacíos – Oscuro entrada() como doble  Sin embargo.Las matrices dinámicas  Si no está seguro sobre el tamaño de una matriz en el momento de la declaración. a veces se espera que el usuario comunicar a nuestra aplicación cuántos elementos de la matriz debe tener  Cuando se declara una matriz dinámica. antes de esta matriz o se utiliza cualquiera de sus elementos. hay que (finalmente) conocer su tamaño y declarar en consecuencia .

que vamos a almacenar en nuestro arsenal entrada . se utiliza el ReDim declaración  los ReDim declaración también se puede utilizar para establecer o cambiar el número de dimensiones y los límites de indexación – Supongamos que queremos pedir al usuario que proporcione valores de entrada.Las matrices dinámicas (Cont.)  Para establecer el tamaño de una matriz dinámica en algún momento más adelante en el código.

escribimos ReDim Preserve de entrada (10) de entrada (10) = InputBox ( "Por favor.") . utilizar la instrucción ReDim Preserve – Supongamos que tenemos una matriz dinámica de tamaño 9 que ya ha sido rellenado con valores y tenemos que añadir un valor más  Para mantener los valores actuales de la matriz además de añadir un elemento más.)  Si desea cambiar el tamaño de una matriz dinámica pero no quieren restablecer sus valores. introduzca un nuevo valor.Las matrices dinámicas (Cont. a continuación.

.. End Function ..Resumen  Para llamar a otro procedimiento sub. utilice el comando Llamada seguido del nombre del procedimiento sub  Procedimientos de la función son similares a los procedimientos y sub siguen esta estructura básica: Nombrefunción función () .

)  Para pasar una variable en Excel VBA. se debe insertar la variable como un argumento / parámetro de la función cuando se le llama  Un procedimiento sub. puede también definirse como Público o Privado . al igual que una variable.Resumen (Cont.

Resumen (Cont. o Público declaraciones de variables – Para una matriz unidimensional.)  tienda de matrices serie de datos que podemos manipular o consulte más adelante  Para definir una matriz. sólo tenemos un único número para especificar el tamaño – Definir multidimensional formacións. Private. Hay que especificar el tamaño de cada dimensión. separados por una coma  El valor del índice inicial por defecto de matrices en VBA es 0  Para cambiar el valor del índice inicial de todas las matrices en nuestro módulo a 1. Tipo Option Base 1 en la parte superior del módulo . utilice el Dim.

)  Para establecer el tamaño de una dinámica matriz en algún momento más adelante en el código. utilice el ReDim declaración  los ReDim Preserve declaración conserva ningún valores de los elementos previamente asignados – Sólo funciona con matrices dinámicas .Resumen (Cont.