You are on page 1of 30

IE 212: Mtodos Computacionales para

Ingeniera Industrial

Lecture Notes # 6:
Procedimientos de funciones y matrices

Saeed Ghanbartehrani
verano 2015

Visin de conjunto

La organizacin de los procedimientos Sub

Crear procedimientos de funciones

Mtodos para pasar variables en procedimientos Sub y


Function

Procedimientos pblicos y privados

Utilizar matrices en Excel VBA

Resumen

La organizacin de los procedimientos


Sub

Debe grupo de diversas acciones en varios


procedimientos sub ms pequeos en lugar de tener un
procedimiento sub grande en el que todo el programa
est escrito
Permite a los programas se ejecuten de manera ms eficiente
Promueve la reutilizacin del cdigo

La estructura del mdulo 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 botn de "Inicio" en
la hoja de "bienvenida"

Para llamar a otro procedimiento sub, utilizamos el


comando Llamada seguido3 del nombre del

La organizacin de los procedimientos


Sub (Cont.)

Por ejemplo, considere tres procedimientos diferentes


subsistemas, llamado GetInput (), Clculos (), y
DisplayResults ()

entonces podemos llamar a estos tres procedimientos


de la sub Principal() procedimiento sub de la siguiente
Sub Principal()
llame GetInput
Los clculos de llamadas
DisplayResults de llamadas
End Sub

Tambin puede llamar a otros procedimientos Sub En


estos tres procedimientos sub
4

Procedimientos de funcin

UN procedimiento de funcin es un tipo de


procedimiento que puede tomar argumentos y ejecutar
una serie de instrucciones

Un procedimiento de funcin difiere de un


procedimiento secundario en ese
Se invoca a travs de su nombre
Se devuelve un solo valor

Los elementos crticos cuando se escribe un


procedimiento de funcin
los nombre de la funcin de
los tipo de la funcin de
5

Procedimientos de funcin (Cont.)

Sintaxis de un procedimiento de funcin


Funcin Nombre ([arglist])
[declaraciones]
[Name = expresin]
[Funcin Salir]
[declaraciones]
[Name = expresin]

End Function

Un procedimiento de funcin se puede llamar desde


cualquier procedimiento Sub o cualquier otro
procedimiento de funcin
Funcin Nombrefuncin ()
....
End Function
6

Procedimientos de funcin (Cont.)

Para ilustrar la apropiado El uso de una funcin en


Excel VBA, utilizaremos un ejemplo donde se calcula la
suma de los dos valores
Usaremos AddTwoNumbers como el nombre de la funcin

Procedimientos de funcin (Cont.)

La funcin en s es bastante simple en este caso

Para devolver un valor desde una funcin en Excel VBA,


debe asignar un valor a la nombre del procedimiento de
funcin

las variables x y y en este ejemplo no se tienen que


declarar
Son las variables utilizadas en todo el procedimiento de funcin
8

Procedimientos de funcin (Cont.)

las variables x y y en la funcin de AddTwoNumbers


asumir los respectivos tipos de datos asignados a un y
segundo
Si hubiramos definido la funcin AddTwoNumbers con tipos de
datos en el argumento, que se limitara a solamente pasan las
variables de ese tipo de datos
Funcin AddTwoNumbers (x As Integer, y como nmero entero)

Ntese tambin que los nombres de las variables


utilizadas como argumentos cuando se invoca la
funcin y los nombres de las variables utilizadas en el
estado procedimiento de funcin no tienen que ser los
mismos
un y segundo en el procedimiento Sub
x y y en procedimiento Function
9

Mtodos para pasar variables

Hay dos mtodos 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 funcin) 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 funcin para utilizar
Por lo tanto, el valor original de la variable permanece intacta
10

Mtodos para pasar variables (Cont.)

Para pasar una variable por valor, Debemos usar la


palabra clave ByVal la hora de definir los argumentos
que la funcin se llevar a
Funcin AddTwoNumbers (ByVal x, ByVal y)
AddTwoNumbers = x + y
End Function

Alternativamente, una variable puede ser pasado por


valor encerrndolo entre parntesis cuando el
procedimiento Sub o funcin se ha llamado
Llamada Multiplicar ((i), j) procedimiento Sub
Resultado = Multiplicar ((a), (b)) procedimiento Function

11

Procedimientos pblicos y privados

El alcance de un procedimiento secundario, como una


variable, puede tambin definirse como Pblico o
Privado

UN privado procedimiento sub es declarado por poner la


palabra Privado antes de Sub declaracin
Privado procedimientos sub slo pueden ser llamados desde
los procedimientos en el mismo mdulo
Privado procedimientos sub no se muestran cuando se intenta
ejecutar una macro en Excel

UN pblico procedimiento sub se puede llamar desde


cualquier otro procedimiento
La palabra Pblico se puede poner delante de la Sub
declaracin, o la Sub declaracin se puede escribir sin una
declaracin anterior
12

Utilizar matrices en Excel VBA

13

Introduccin a las matrices en Excel


VBA

tienda de matrices serie de elementos de datos que


pueden ser manipulados o referencia ms adelante
Las matrices son muy tiles cuando tenemos que realizar la
misma operacin (o una serie de operaciones) en un grupo de
valores
Las matrices tambin pueden hacer que los programas ms
compacto (y posiblemente ms eficiente)
Por ejemplo, si conocemos la salida de un programa ser de 3
variables enteras, podemos almacenar estos valores en una matriz
de enteros de tamao 3

El conjunto de elementos de datos almacenados en un


array debe todos de la mismo tipo de datos

14

declarar arrays

Para declarar una matriz, las palabras clave de


declaracin de variables Dim, Private, o Pblico puede
ser usado

VBA reconocer una variable como un conjunto y no


una variable escalar debido a un conjunto de parntesis
(y, en algunos casos, la tamao de la matriz) Se incluye
en la declaracin de variables
Oscuro stdNames (10) Como cuerda
Oscuro stdGrades () como enteros

As es como la matriz unidimensional TempData, Que


contiene 10 elementos del tipo de datos Doble, Se
declara
Oscuro TempData (9) como doble
15

declarar arrays (Cont.)

Para una matriz unidimensional, un nico nmero es


todo lo que es necesario especificar el tamao

Declarar multidimensional arrays, Es necesario


especificar el tamao de cada dimensin (es decir, filas
y columnas), separados por una coma
Oscuro datos (2, 3) como doble

16

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, 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,0

17

ndices Arrays ' (Cont.)

Ejemplos
expData ( ) =

myOSUCourses ( , ) =

18

ndices Arrays ' (Cont.)

Se puede indicar a Excel VBA para cambiar los valores


del ndice por defecto de todas las matrices en el
mdulo con la instruccin Option Base 1
Tablas unidimensionales comenzar a las 1
Dos matrices unidimensionales comenzar a las 1,1
Option Base 1
Oscuro datos (10) como doble, Resultados (12) como doble

Si desea mantener el ndice inicial por defecto como 0


pero me gustara una matriz especfica para comenzar
con un ndice diferente, puede especificar el valor del
ndice de partida en la declaracin de matriz
Oscuro datos (1 A 10) As Long, los resultados (12) como doble
Oscuro matriz (1 A 20, 1 A 10) como doble
19

ndices Arrays ' (Cont.)

En el ltimo caso, acaba de ser conscientes del tamao


de la matriz
Oscuro resultados (2-13) como doble
size = ndice de lmite superior - ndice lmite inferior + 1

Sea cual sea el valor del ndice inicial es elegido, 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

ndices Arrays ' (Cont.)

Funcin LBound
Devuelve una Largo que contiene el ms pequeo subndice
disponible para la dimensin indicada de una matriz
Sintaxis LBound (arrayname [, dimensin])

Funcin UBound
Devuelve una Largo que contiene la mayor subndice disponible
para la dimensin indicada de una matriz
Sintaxis UBound (arrayname [, dimensin])
Dim A (1 a 100, 0 a 3) como entero
LBound (A, 1) UBound (A, 1) LBound (A, 2) UBound (A, 2)

21

Actualizan matrices con valores

Para asignar un valor de un elemento especfico de la


matriz, se utiliza el ndice del elemento
Por ejemplo, para asignar un valor del 10,5 al tercer miembro
de la matriz de datos (9), Nos escriba
de datos (2) = 10,5

Para configurar varios valores de una matriz, es ms


prctico 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 nmero de ndice, nos
escriba
por i = LBound (datos) A UBound (datos)
22

Actualizan matrices con valores (Cont.)

Para asignar valores a los elementos de un array


multidimensional o para buscar un valor, el uso anidado
Para el siguiente bucles con diferentes variables de
control

Por ejemplo, para establecer el valor de cada elemento


de la matriz de dos dimensiones datos (4, 9) igual al
producto de sus ndices, debe hacer lo siguiente:
0

10 12 14 di 18
ec
is
i
s

12 15 18 21 24 27

23

Las matrices dinmicas

Si no est seguro sobre el tamao de una matriz en el


momento de la declaracin, se puede utilizar una matriz
dinmica declaracin
Por ejemplo, a veces se espera que el usuario comunicar a
nuestra aplicacin cuntos elementos de la matriz debe tener

Cuando se declara una matriz dinmica, el tamao de la


matriz no se especifica y los parntesis estn vacos
Oscuro entrada() como doble

Sin embargo, antes de esta matriz o se utiliza cualquiera


de sus elementos, hay que (finalmente) conocer su
tamao y declarar en consecuencia

Las matrices dinmicas (Cont.)

Para establecer el tamao de una matriz dinmica en


algn momento ms adelante en el cdigo, se utiliza el
ReDim declaracin

los ReDim declaracin tambin se puede utilizar para


establecer o cambiar el nmero de dimensiones y los
lmites de indexacin
Supongamos que queremos pedir al usuario que proporcione
valores de entrada, que vamos a almacenar en nuestro arsenal
entrada

Las matrices dinmicas (Cont.)

Si desea cambiar el tamao de una matriz dinmica pero


no quieren restablecer sus valores, a continuacin,
utilizar la instruccin ReDim Preserve
Supongamos que tenemos una matriz dinmica de tamao 9
que ya ha sido rellenado con valores y tenemos que aadir un
valor ms

Para mantener los valores actuales de la matriz adems


de aadir un elemento ms, escribimos
ReDim Preserve de entrada (10)
de entrada (10) = InputBox ( "Por favor, introduzca un nuevo
valor.")

Resumen

Para llamar a otro procedimiento sub, utilice el comando


Llamada seguido del nombre del procedimiento sub

Procedimientos de la funcin son similares a los


procedimientos y sub siguen esta estructura bsica:
Nombrefuncin funcin ()
....
End Function

Resumen (Cont.)

Para pasar una variable en Excel VBA, se debe insertar


la variable como un argumento / parmetro de la funcin
cuando se le llama

Un procedimiento sub, al igual que una variable, puede


tambin definirse como Pblico o Privado

Resumen (Cont.)

tienda de matrices serie de datos que podemos


manipular o consulte ms adelante

Para definir una matriz, utilice el Dim, Private, o Pblico


declaraciones de variables
Para una matriz unidimensional, slo tenemos un nico nmero
para especificar el tamao
Definir multidimensional formacins, Hay que especificar el
tamao de cada dimensin, 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 mdulo a 1, Tipo Option Base 1 en
la parte superior del mdulo

Resumen (Cont.)

Para establecer el tamao de una dinmica matriz en


algn momento ms adelante en el cdigo, utilice el
ReDim declaracin

los ReDim Preserve declaracin conserva ningn


valores de los elementos previamente asignados
Slo funciona con matrices dinmicas

You might also like