Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
INTRODUCCINA LA COMPUTACIN
TERCER LABORATORIO
DESARROLLO DE PROGRAMAS 1
2015 1
Tabla de Contenido
1. VISUAL BASIC FOR APPLICATIONS - VBA ....................................................................................... 4
2. CREACIN DE UN LIBRO DE EXCEL ................................................................................................. 5
2.1. SIN MACROS.......................................................................................................................................... 5
2.2. CON MACROS ....................................................................................................................................... 5
3. TRABAJANDO CON EL EDITOR DE VISUAL BASIC ....................................................................... 6
3.1. INSERTAR FICHA PROGRAMADOR .......................................................................................................... 6
3.2. EL EDITOR DE VISUAL BASIC .................................................................................................................. 7
3.2.1. Men ........................................................................................................................................... 8
3.2.2. Barra de Herramientas ................................................................................................................. 8
3.2.3. Explorador de Proyectos ................................................................................................................ 9
3.2.4. Cdigo .......................................................................................................................................... 9
3.2.5. Ventana Inmediata ....................................................................................................................... 9
3.2.6. Ventana de Propiedades.............................................................................................................. 10
3.3. LECTURA Y ESCRITURA DE DATOS ........................................................................................................ 10
3.3.1. Lectura de datos desde celdas de Excel ....................................................................................... 10
3.3.2. Escritura de datos desde celdas de Excel ..................................................................................... 10
3.3.3. Forma Simple: ............................................................................................................................ 12
3.3.4. Lectura y escritura desde VBA ..................................................................................................... 12
3.4. OPERACIONES ARITMTICAS EN VBA ................................................................................................... 13
4. CREACIN DE SUBPROGRAMAS ...................................................................................................... 14
4.1. REGLAS PARA NOMBRAR SUBPROGRAMAS ............................................................................................. 14
4.2. COMENTARIOS EN LOS SUBPROGRAMAS ............................................................................................... 15
4.3. CREACIN DE PROCEDIMIENTOS.......................................................................................................... 15
4.3.1. Usando el VBE ............................................................................................................................ 15
4.3.2. Ejecucin de un procedimiento .................................................................................................... 16
4.3.3. Mediante el uso de la grabadora de macros ................................................................................ 16
4.3.4. Ejecucin de una macro .............................................................................................................. 18
4.4. CREACIN DE FUNCIONES .................................................................................................................. 19
4.4.1. Funciones VBA ............................................................................................................................ 20
4.4.2. Funciones de Excel ...................................................................................................................... 21
4.4.3. Funciones personalizadas ............................................................................................................ 21
5. DATOS ....................................................................................................................................................... 26
5.1. CONCEPTO ......................................................................................................................................... 26
6. TIPOS DE DATOS .................................................................................................................................... 26
6.1. TIPOS DE OPERACIONES ..................................................................................................................... 27
6.1.1. Operaciones aritmticas ........................................................................................................... 27
6.1.2. Operaciones lgicas ................................................................................................................. 27
6.1.3. Operaciones de concatenacin ................................................................................................. 27
6.1.4. Operaciones de comparacin ................................................................................................... 28
7. VARIABLES Y CONSTANTES .............................................................................................................. 28
7.1. VARIABLES ........................................................................................................................................ 28
7.1.1. Concepto................................................................................................................................... 28
7.1.2. Reglas para nombrar una variable .......................................................................................... 28
7.1.3. Declaracin de variables ......................................................................................................... 28
7.1.4. Operacin asignacin .............................................................................................................. 29
7.2. CONSTANTES ..................................................................................................................................... 29
7.2.1. Concepto................................................................................................................................... 29
7.2.2. Declaracin de constantes ....................................................................................................... 29
7.2.3. Constantes propias de VBA ...................................................................................................... 30
7.3. MBITO DE LAS VARIABLES Y CONSTANTES ...................................................................................... 31
7.3.1. mbito local ............................................................................................................................. 31
Desarrollo de Programas 1
Desarrollo de Programas 1
Excel proporciona ms de 100 clases de objetos. Algunos de stos son: un libro de trabajo, una hoja de clculo, un
rango de una hoja de clculo, un grfico, una caja de texto, un botn de comandos, entre otros. Los objetos estn
ordenados de manera jerrquica; es decir, que un objeto puede contener a otro objeto. As, por ejemplo, Excel es
un objeto llamado Application y contiene otros objetos, como por ejemplo los workbooks (libros de trabajo); y a su
vez, stos contienen a los objetos Sheets (hojas). A este orden de los objetos se le conoce como modelo de objeto
de Excel.
Para referirnos a un objeto que est contenido en otro debemos especificar la jerarqua. Por ejemplo:
a.
b.
Sin embargo, la referencia antes indicada es un poco larga de escribir y en muchas ocasiones no ser necesario
indicarla. As, en el segundo ejemplo arriba mencionado, si est trabajando slo con un libro en Excel (Libro1),
podra obviar la referencia a los objetos Application y Workbook reducindose la expresin a: Sheets(Hoja1).
Desarrollo de Programas 1
Asimismo, cada objeto tiene un conjunto de caractersticas propias a las que llamamos propiedades. Por ejemplo,
el objeto Sheets tiene la propiedad name, y mediante esta propiedad una hoja adquiere un nombre. Para cambiar la
propiedad de un objeto debemos referirnos al objeto y luego a la propiedad. Por ejemplo:
Sheets(Hoja1).name = Primera
Adems de las propiedades, todos los objetos disponen de mtodos. Un mtodo es una accin que realiza dicho
objeto. Por ejemplo, el objeto Sheets tiene el mtodo delete que se encarga de eliminar al objeto. As, para eliminar
el objeto Hoja2, escribimos:
Sheets(Hoja2).delete
En la Cinta de opciones pulsar la ficha Archivo y hacer clic en la opcin Guardar como.
Seleccionar la ubicacin en la cual se desea guardar el Libro de Excel.
Colocar el nombre del archivo a guardar.
Presionar el botn Guardar.
El archivo grabado tendr la extensin xlsx. La "x" significa un archivo XML que NO TIENE MACROS.
Formato
Extensin
Libro de Excel
.xlsx
Descripcin
Formato de archivo basado en XML predeterminado de Excel 2010 y Excel 2007.
No se pueden almacenar cdigos de macros de Microsoft Visual Basic para
Aplicaciones (VBA) ni hojas de macro de Office Excel 4.0 (.xlm).
En la Cinta de opciones pulsar la ficha Archivo y hacer clic en la opcin Guardar como.
Seleccionar la ubicacin en la cual se desea guardar el Libro de Excel.
Colocar el nombre del archivo a guardar.
En el campo Tipo seleccionar la opcin Libro de Excel habilitado para macros.
Presionar el botn Guardar.
El archivo grabado tendr la extensin xlsm. La "m" significa que se trata de un archivo XML que CONTIENE
MACROS.
IMPORTANTE: A partir de esta sesin de laboratorio, todo el trabajo se realizar con libros de Excel
habilitados para macros, por lo cual se recomienda poner especial cuidado en asegurarse de crear y guardar
adecuadamente este tipo de archivos.
Formato
Libro de
(cdigo)
Excel
Extensin
.xlsm
Descripcin
Formato de archivo basado en XML y habilitado para macros de Excel
2010 y Excel 2007. Almacena cdigo de macros de VBA y hojas de
macros de Excel 4.0 (.xlm).
Desarrollo de Programas 1
En la Cinta de opciones pulsar la ficha Archivo y hacer clic en la opcin Opciones de Excel.
b.
c.
d.
Desarrollo de Programas 1
c.
d.
Hacer clic en el Men Insertar, y seleccionar Modulo. Esto agregar una seccin en la cual podr
comenzar a crear sus programas. La ventana ser similar a:
1
3
4
Desarrollo de Programas 1
3.2.1. Men
Contiene opciones parecidas a los mens de otras aplicaciones. Probablemente las opciones de men que ms
usar son:
Archivo: Donde se encuentran diversas opciones relacionadas al archivo Excel con el que est
trabajando. Tal vez las que usted usar mayormente son guardar libro, cerrar y volver a Excel.
Edicin: Donde se encuentran todas las herramientas necesarias para la edicin del cdigo que vaya a
escribir, como copiar, pegar, cortar, deshacer, buscar, reemplazar, entre otras.
Ver: Le ayudar a visualizar diversas ventanas del entorno. Por ejemplo, Cdigo, Ventana Inmediato,
Ventana Inspeccin, Explorador de Proyectos, Ventana de Propiedades, entre otras. Adems de eso, tiene
la opcin de visualizar las barras de herramientas del entorno y regresar al libro mediante la opcin Excel
(que tiene teclas de atajo [Alt] + [F11])
Insertar: Le ayudar a insertar un procedimiento, un formulario, un mdulo, entre otras opciones.
Formato: Donde se encuentran todas las opciones para darle formato al programa que vaya a escribir.
Por ejemplo, alineacin, espacios, entre otras.
Depuracin: Donde se encuentran todas las opciones que le ayudarn a verificar errores en su
programa. Las opciones que probablemente usar ms son:
o Compilar VBAProject: Para verificar si hay algn error de sintaxis en los procedimientos que
haya escrito.
o Paso a paso por instrucciones: Ejecuta un procedimiento paso a paso; es decir, lo ejecuta
instruccin por instruccin. En caso que dentro del procedimiento se llamara a otro
procedimiento, tambin se ejecuta paso a paso cada una de las instrucciones de este ltimo.
o Paso a paso por procedimientos: De manera similar al anterior, ejecuta un procedimiento paso a
paso. La diferencia est en que si alguna de las instrucciones es un procedimiento, no se ejecutan
cada una las instrucciones que lo compone; por el contrario, se toma al procedimiento llamado
como una nica instruccin.
Ejecutar: La opcin Ejecutar Sub/UserForm (con tecla de atajo [F5]) le permite ejecutar un
procedimiento. En caso quiera parar el procedimiento, puede seleccionar la opcin Restablecer.
Desarrollo de Programas 1
3.2.4. Cdigo
En esta ventana se encuentra el cdigo en VBA. Para el caso de los laboratorios que desarrollaremos, esta ventana
siempre debe corresponder a alguno de los mdulos insertados en el proyecto. Para ver el cdigo de un mdulo,
debe hacer doble clic sobre el nombre de dicho mdulo en la ventana Explorador de proyectos. A menos
que usted haya aadido cdigo VBA, la ventana de cdigo estar vaca como se ve en la siguiente pantalla:
Desarrollo de Programas 1
10
Desarrollo de Programas 1
Workbooks(Nombre_de_libro).Worksheets(Nombre_de_hoja).Range(CF) = valor_a_otorgar
Donde valor_a_otorgar es el valor que se escribir en la celda correspondiente a la columna C, fila F de la hoja
Nombre_de_hoja del libro Nombre_de_libro. Por ejemplo:
Workbooks(Libro1). Worksheets(Hoja de datos). Range(A1)=dato
Escribir en la celda A1 de la hoja de trabajo Hoja de datos del libro Libro1 el valor que tenga la variable dato.
Usando la propiedad Cells:
Si quisiramos modificar el valor de un objeto celda, debemos colocar:
Workbooks(Nombre_de_libro).Worksheets(Nombre_de_hoja).Cells(F,C) = valor_a_otorgar
Donde valor_a_otorgar es el valor que se escribir en la celda correspondiente a la fila F, y al ndice de columna
C de la hoja Nombre_de_hoja del libro Nombre_de_libro. Por ejemplo para el ejemplo anterior se tendra:
Workbooks(Libro1). Worksheets(Hoja de datos). Cells(1,1)=dato
Ejemplo:
Deseamos escribir un programa que lea los datos almacenados en las celdas A1, B1 y C1, duplique el valor de
dichos datos y los escriba en las celdas A2, B2 y C2.
a.
b.
c.
d.
e.
Regrese a la primera hoja del libro en el que est trabajando y coloque datos en las celdas A1, B1 y C1:
11
f.
Desarrollo de Programas 1
por:
valor1 = Sheets(Hoja1).Range("A1")
o
valor1 = Hoja1. Range(A1)
Mi procedimiento ser:
IMPORTANTE: En la mayora de los ejercicios del curso, trabajaremos de esta forma. Es decir, los datos de
entrada se leern desde las celdas y los datos de salida se escribirn en las celdas del libro de trabajo actual.
Inputbox:
Muestra una caja de dilogo en la que se solicita el ingreso de un dato. Se utiliza cuando se quiere leer un dato
que ser ingresado por teclado. Su sintaxis es:
dato_ingresado = InputBox ("Mensaje que aparecer en la ventana en la se solicitan los datos","Ttulo de
la ventana en la que solicitar los datos")
Devuelve el valor que haya sido ingresado por teclado, en la variable dato_ingresado.
12
Desarrollo de Programas 1
Si nosotros ingresramos 17, por ejemplo, y diramos clic en aceptar. El dato ingresado (17) ser almacenado
en Edad.
MsgBox:
Muestra una caja de dilogo que contiene un mensaje y botones. Su funcin principal es la de mostrar alguna
informacin por pantalla. La sintaxis de esta sentencia es:
Call MsgBox ("La sentencia que quiere que aparezca en la ventana", ,"Ttulo de la ventana")
Por ejemplo si ejecutramos: Call MsgBox("5", , "Su nmero de la suerte es:")
Se mostrar la siguiente ventana:
Operador
Precedencia o Prioridad
Potenciacin
Negacin
Multiplicacin
Divisin
mod
Adicin
Substraccin
Los operadores se aplican a expresiones matemticas siempre de izquierda a derecha, resolviendo, primero, la
operacin con mayor prioridad, para luego seguir con las dems. Si una expresin a evaluar tuviera una
subexpresin entre parntesis, primero se opera dicha subexpresin y luego se aplica la prioridad de los
operadores.
13
Desarrollo de Programas 1
4. Creacin de Subprogramas
Tal como se mencion previamente, en VBA se pueden crear 2 tipos de subprogramas:
Procedimiento: Es un grupo de instrucciones VBA que realiza una accin (o acciones) con Excel y
devuelve CERO o MS DE UN VALOR.
Funcin: Es un grupo de instrucciones VBA que realizan un clculo y devuelven un NICO VALOR.
En VBA, se hace referencia a los procedimientos mediante la palabra reservada Sub y a las funciones mediante la
palabra reservada Function.
Las macros son especficamente procedimientos (Sub). Piense en un procedimiento como un comando: al
momento de ejecutarlo algo sucede.
Una funcin es tambin un subprograma, pero es distinto de un procedimiento. Usted ya est familiarizado con el
concepto funcin. Excel incluye muchas funciones propias que usted puede usar como SUMA, POTENCIA,
BUSCARV, entre otras. Estas funciones son usadas en frmulas o expresiones, y cada funcin tiene uno o ms
argumentos (aunque algunas carecen de argumentos). La funcin realiza algunos clculos que usted no observa y le
devuelve un NICO valor. Lo mismo sucede con las funciones que usted desarrolla con VBA.
Mayormente, utilizaremos el Editor de Visual Basic para crear los subprogramas (procedimientos y funciones). Sin
embargo, algunos procedimientos llamados Macros se pueden crear usando la Grabadora de Macros del Excel.
Ms adelante se explicar:
Cmo crear procedimientos
o Mediante la grabadora de macros
o Mediante el uso del VBE
Cmo crear funciones definidas por el usuario. Antes, se har una revisin de las funciones estndar de
VBA y de las funciones de Excel.
Puede usar letras, nmeros, y algunos caracteres puntuales (_ por ejemplo), pero el primer carcter
debe ser una letra.
No puede usar espacios en blanco o comas.
No puede usar ninguno de los siguientes caracteres: #, $, %, &, @, ^,*, !, espacio en blanco.
Si va a escribir una funcin que luego usar en una frmula, asegrese que el nombre no se parezca a una
direccin de celda o rango (AC12 por ejemplo).
14
Desarrollo de Programas 1
Range("A1:A13").Select
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Continuando con el mdulo que habamos creado, agregaremos a este mdulo un procedimiento que no tiene
parmetros. En la ventana de cdigo correspondiente al mdulo 1 escribiremos Sub Bienvenida( ) y presionamos
la tecla [Enter]. Veremos que automticamente se genera la lnea End Sub.
Dentro del procedimiento escribiremos la o las sentencias que queremos ejecutar, por ejemplo:
Range(A2)= "Bienvenido a Excel !!!"
15
Desarrollo de Programas 1
Desde VBE, ubicarse en el cdigo del procedimiento que desea ejecutar y presionar [F5] o el botn
de la barra de herramientas (tambin puede seleccionar la opcin Ejecutar Sub/UserForm del men
Ejecutar).
Cuando el procedimiento no tiene parmetros, puede ejecutarlo de la misma manera en que ejecutara
una macro (ver apartado Ejecucin de una macro)
En la Cinta de opciones, pulsar la ficha Programador y en el grupo Cdigo hacer clic en la opcin
Grabar macro.
Esto activar el cuadro de dilogo Grabar Macro, donde deber ingresar un nombre a la macro y
elegir el mtodo abreviado para ejecutarla (qu tecla, adems de la tecla [Ctrl], deber presionarse para
activar (ejecutar) la macro).
Al dar clic en Aceptar se cierra el cuadro de dilogo y se empieza a grabar la Macro. A partir de este
instante Excel monitorea todo lo que usted haga y lo convierte a cdigo VBA. Note que en la cinta de
opciones aparece un nuevo botn en lugar del de Grabar macro:
d.
e.
f.
Al hacer doble clic sobre Mdulo1 aparecer al lado derecho una pantalla similar a la siguiente:
16
Desarrollo de Programas 1
All podr observar el cdigo que se gener al grabar las macros. Note que algunos renglones tienen palabras
escritas en verde y comienzan con una comilla simple. Se trata de comentarios. Cuando se graba una macro, se
comenta el nombre de la macro, en qu fecha se grab y la persona que lo grab.
Ejercicios
a.
b.
a.
b.
Cree la macro Macro1 (con mtodo abreviado, CTRL-w) que escriba en la celda A1 la palabra
Universidad, que escriba en la celda A2 el nmero 2010 y que en la celda A3 coloque una frmula que le
sume 1 al valor de la celda A2.
Cree la macro Macro2 (con mtodo abreviado CTRL-b) que seleccione las celdas A1:A3 y borre su
contenido.
Solucin de la Macro 1
En la Hoja1, en la Cinta de opciones pulsar la ficha Programador y en el grupo Cdigo hacer clic en la
opcin Grabar macro.
Asigne el nombre Macro1, [w] como tecla de mtodo abreviado y pulse en botn Aceptar.
Dirjase a la celda A1, escriba UNIVERSIDAD, y presione [Enter]
En la celda A2, escriba 2010, y presione [Enter]
En la celda A3, escriba la frmula =A2+1, y presione [Enter]
Seleccione el botn Detener grabacin [ ] de la ficha Programacin para culminar con la grabacin.
Solucin de la Macro2
En la Cinta de opciones pulsar la ficha Programador y en el grupo Cdigo hacer clic en la opcin
Grabar macro.
Asigne el nombre Macro2, [b] como tecla de mtodo abreviado y pulse en el botn Aceptar.
Seleccione con el ratn el bloque de celdas A1:A3 y presione el botn [Supr] del teclado.
Seleccione el botn Detener grabacin [ ] de la ficha Programacin para culminar con la grabacin
c.
Ejecutar alternativamente la Macro1 y la Macro2, con las teclas [Ctrl] + [W,] y [Ctrl] + B.
A continuacin analizaremos el cdigo generado automticamente para las macros Macro1 y Macro2.
Vaya al Editor de Visual Basic y en la ventana Proyecto despliegue la carpeta Mdulos, d doble clic en
Mdulo1.
Observar que para la macro Macro1 se ha generado el siguiente cdigo:
Sub Macro1()
' Macro1 Macro
' Macro grabada el 21/04/2010
Range("A1").Select
ActiveCell.FormulaR1C1 = "Universidad"
Range("A2").Select
ActiveCell.FormulaR1C1 = "2010"
Range("A3").Select
ActiveCell.FormulaR1C1 = "=R[-1]C+1"
Range("A4").Select
End Sub
Excel ejecuta cada una de las instrucciones en el orden en el que estn escritas:
17
Desarrollo de Programas 1
La primera instruccin, VBA identifica la macro como un procedimiento (Sub) y le da un nombre (en este
caso, Macro1). Recuerde que al momento de grabar la macro usted decide su nombre.
Las siguientes dos instrucciones estn precedidas de una comilla simple (), indicando que se trata de
comentarios. Los comentarios se incluyen para dar informacin adicional a la persona que escribe el
programa; Excel no ejecuta los comentarios.
La siguiente instruccin, Range(A1).Select, le indica a Excel que debe seleccionar la celda A1. Como
no se hace referencia a la hoja de la que desea seleccionar la celda, Excel asumir que se trata de la hoja
que est activa (en nuestro caso, la Hoja1).
La siguiente instruccin, ActiveCell.FormulaR1C1 = "Universidad", le indica a Excel que debe colocar en la
celda activa la palabra Universidad.
Las dos siguientes sentencias son semejantes a las explicadas anteriormente.
Luego de la instruccin en la que se indica seleccionar la celda A3, se encuentra la instruccin
ActiveCell.FormulaR1C1="=R[-1]C+1", que le indica a Excel que coja el valor de la celda correspondiente
a la fila anterior y a la misma columna respecto a la celda activa ((R[-1]C) y le agregue 1 (+1).
Por ltimo, se selecciona la celda A4.
Al igual que en el ejemplo anterior, la primera instruccin identifica la macro como un procedimiento
(Sub) de nombre Macro2.
Las siguientes dos instrucciones son comentarios.
La siguiente instruccin, Range("A1:A3").Select, le indica a Excel que debe seleccionar el rango A1:A3; es,
decir que seleccionar las celdas comprendidas en ese rango (A1, A2, A3).
La siguiente instruccin, Selection.ClearContents, le indica a Excel que debe borrar el contenido de la
seleccin actual (la que se indic en la instruccin anterior, A1:A3)
Se pueden usar las Macros para tareas mucho ms complejas, inclusive para elegir opciones del men de Excel. Por
ejemplo, se puede crear una macro que genere un grfico o una que abra un archivo o una que realice clculos
complicados, entre otras.
Usando la teclas de mtodo abreviado asignadas en el momento de crear la macro. En nuestro ejemplo,
[Ctrl] + [W] y [Ctrl] + [B], respectivamente.
Dentro de VBE, ubicndose en el procedimiento que desea ejecutar, por ejemplo Macro2, y presionando
.
Tambin es posible llamar al procedimiento desde un botn que usted podra dibujar en la hoja de clculo
de Excel. Para ello, deber ubicarse en el grupo Controles de la ficha Programador:
Seleccionar el cono Insertar (resaltado en el dibujo anterior), luego de lo cual se desplegar un cuadro de
controles como el mostrado:
18
Desarrollo de Programas 1
Seleccionar el primer cono de los controles de formulario, el cual le permite dibujar un botn. Luego, ubique el
cursor del mouse en alguna de parte de la hoja (ver que el cursor tiene forma de cruz) y haga clic sobre ella.
Automticamente, se dibujar el botn y, a continuacin, aparecer una lista con las macros disponibles y Excel le
preguntar a qu macro desea asociar dicho botn. Supongamos que se quisiera asociar a la Macro1 (antes
desarrollada). Finalmente, en la hoja tendr algo similar a:
En adelante, cada vez que se presione el botn Botn 1, se ejecutar la macro Macro1.
d.
En la misma hoja de clculo, en la ficha Programador de la cinta de opciones se puede elegir la opcin
Macros, tras lo cual aparecer una ventana con la lista de todas las macros disponibles:
Lo nico que debe hacer es seleccionar la macro que desea ejecutar y presionar Ejecutar.
19
Desarrollo de Programas 1
Sintaxis
Accin
Abs
=Abs(n)
Atn
=Atn(n)
Cos
=Cos(n)
Exp
=Exp(n)
Fix *
=Fix(n)
Hex
=Hex(n)
Int *
=Int(n)
Log
=Log(n)
Oct
=Oct(n)
Rnd
=Rnd
Round
=Round(n,numDecimales)
Sgn
=Sgn(n)
Sin
=Sin(n)
Sqr
=Sqr(n)
Tan
=Tan(n)
Valor de Pi
=Application.Pi()
* La diferencia entre Int y Fix es que, si el nmero es negativo, Int devuelve el primer entero negativo menor o
igual a nmero, mientras que Fix devuelve el primer entero negativo mayor o igual a nmero.
Por ejemplo, Int convierte -8.4 en -9 y Fix convierte -8.4 a -8.
A pesar de que VBA ofrece una gran cantidad de funciones, en algunas ocasiones tal vez no encuentre lo que
necesita. Afortunadamente, usted tambin puede usar la mayora de funciones que ofrece Excel. Las nicas que no
puede usar son aquellas que tienen una funcin equivalente en VBA.
4.4.1.1. Algunas transformaciones tiles
Funciones trigonomtricas:
tan(x) = sen(x)/cos(x)
cot(x) = cos(x)/sen(x)
sec(x) = 1/cos(x)
csc(x) = 1/sen(x)
x
1 x
1 x2
)
x
arcsec(x) = arctan
( x 2 1)
arccsc(x) = arctan (
1
x2 1
20
Desarrollo de Programas 1
O simplemente a = Application.Sum(3,14)
En el siguiente ejemplo se muestra cmo un procedimiento utiliza funciones VBA y funciones Excel:
Sub Area_circulo( )
r = Range(A1)
p = Application.Pi( )
a=p*r^2
a = Round(a, 2)
21
Desarrollo de Programas 1
Esta funcin recibe dos argumentos, num1 y num2, que son los datos que se necesitan para hallar el resultado de la
funcin. Luego, usted podra usar esta funcin en el libro de trabajo usndolo como parte de la frmula de una
celda. Por ejemplo:
Usaremos esta funcin desde el libro Excel colocndola como parte de la frmula en la celda D1:
22
Desarrollo de Programas 1
Cree en su hoja de trabajo en Excel una tabla como la que se muestra a continuacin:
Luego siga las instrucciones a continuacin para usar la funcin creada en el libro Excel con ayuda del asistente
para insertar funciones:
a.
Ubquese en la celda C3 y seleccione la opcin Insertar Funcin desde la Ficha Frmulas, lo cual le mostrar
una ventana como la siguiente:
b.
Aqu seleccione la categora Definidas por el usuario, y enseguida se mostrarn todas las funciones que
fueron creadas desde el VBE.
Seleccione la funcin que desee aplicar. para el ejemplo ser Area_circular, y presionar Aceptar. Se
mostrar una ventana para completar los datos que requiere la funcin:
c.
d.
En el caso de nuestra funcin, ingrese el valor del radio (por ejemplo: 2) o seleccione la celda desde donde
nuestra funcin deber coger el valor (en nuestro caso A3). Presione Aceptar.
23
e.
Desarrollo de Programas 1
Se sabe que los valores de x, phi, b y a sern colocados en las celdas B4, C4, D4 y E4, respectivamente, y que el
resultado deber ser colocado en F4.
Para resolver esta expresin se podra crear una funcin adicional para hallar la arcosecante y luego hacer una
funcin que halle M. De la siguiente manera:
24
Desarrollo de Programas 1
Finalmente, puede colocar un botn que ejecute el procedimiento Imprimir_formula. Para ello, vaya al grupo
Controles de la ficha Programador en la cinta de opciones:
Seleccione el cono Insertar (resaltado en el dibujo anterior), y se desplegar un cuadro de controles como el
mostrado:
Seleccione el primer cono de los controles de formulario, luego ubique el cursor del ratn en alguna de parte de
la hoja. Aparecer la siguiente ventana:
25
Desarrollo de Programas 1
Para dar un acabado final a la presentacin, haga clic derecho al botn para seleccionarlo y luego haga clic en
alguna parte del borde del botn y, sin soltar el ratn, desplace el botn hasta donde desee que aparezca. La
pantalla final ser similar a la siguiente figura:
5. Datos
El propsito principal de VBA es manipular y transformar datos, lo que son almacenados en estructuras llamadas
variables y constantes. Las variables pueden contener los datos representados por un tipo de dato establecido.
Algunos datos pueden residir en objetos tales como rangos de hojas de clculo.
En esta seccin se har un pequea introduccin al concepto de Dato y en la siguiente se tratarn las Variables y
Constantes.
5.1. Concepto
Un dato es un nmero, una letra, una fecha, etc. que la computadora procesa para transformarlo en informacin
significativa. Algunos ejemplos de datos son:
La direccin de la Universidad
El precio del men en la cafetera
Eres Mayor de Edad?
Tienes la boleta sin pagar?
IGV
Tipo de cambio del dlar
6. Tipos de datos
Cada dato posee un tipo especfico. Cuando hablamos de tipos de datos nos referimos a la manera en la que se
almacenan los datos en la memoria de la computadora. Por ejemplo: nmeros enteros, nmeros reales, texto, etc.
VBA puede darse cuenta, automticamente, del tipo de dato a almacenar, pero esto implica una demora en el
tiempo de ejecucin de su programa y un uso ineficiente de la memoria. Tal vez esto no sea significativo para
aplicaciones pequeas, pero s para las grandes y complejas.
Algunos de los tipos de dato ms comunes en VBA son:
26
Desarrollo de Programas 1
Tipo de dato
Lgicos
Boolean
Numricos
Byte (naturales)
Integer (enteros)
Long (entero largo)
Valor Mximo
1
2
4
0
-32,768
-2,147,483,648
255
32,767
2,147,483,647
-3.402823E38 (*)
1.401298E-45 (*)
-1.79769313486231E308
4.94065645841247E-324
-1.401298E-45
(*)
3.402823E38 (*)
-4.94065645841247E-324
1.79769313486232E308
Operacin
Adicin
Substraccin
Multiplicacin
Obtener la parte entera de una divisin
Divisin
Potencia
Obtener el residuo de una divisin
Ejemplo
18 + 7 = 25
18 - 7 = 11
18 * 7 = 126
18 \ 7 = 2
18 / 7 = 2.571429
5^2
= 25
18 mod 7= 4
Operacin
Y (Conjuncin)
O (Disyuncin)
No (Negacin)
Ejemplo
(5 < 2) and (5 < 2) = True
(5 >=2) or (5<2) = True
not (5 <> 2) = False
Operacin
Concatenacin de cadenas de
caracteres
Concatenacin de cadenas de
caracteres
Ejemplo
rosa & mendez
rosa + mendez
27
Desarrollo de Programas 1
Operacin
Menor
Menor o igual
Mayor
Mayor o igual
Distinto
Igual
Ejemplo
5 < 2 (False)
5 <= 2 (False)
5 > 2 (True)
5 >= 2 (True)
5 <> 2 (True)
5 = 2 (False)
7. Variables y Constantes
7.1. Variables
7.1.1. Concepto
Cuando un subprograma solicita el ingreso de un dato, ste debe ser almacenado temporalmente en algn espacio
de la memoria de su computadora. Una variable es el nombre que se le da al espacio de memoria en el que se
almacena el valor de un dato.
VBA da bastante flexibilidad para nombrar una variable; sin embargo, el nombre debe ser bastante descriptivo para
facilitar el trabajo de programacin y evitar confusiones. Algunos ejemplos de variable pueden ser:
Direccin_universidad, precio_menu, nombre_alumno, mayorDeEdad, boletasSinPagar, igv, tipo_de_cambio, x,
precio, edad, numeroEstacionamiento, etc.
Puede usar letras, nmeros y algunos caracteres especiales, pero EL PRIMER CARACTER siempre debe ser
una LETRA.
No puede usar espacios en blanco o puntos.
VBA no distingue entre maysculas y minsculas. Es decir, si tiene una variable nombre es lo mismo que la
escriba Nombre, NOMBRE, NomBre.
No puede usar los siguientes caracteres: #, $, %, &, !
Los nombres de las variables pueden tener como mximo 254 caracteres.
Tenga cuidado de no usar alguna palabra reservada de VBA como nombre de variable. Las palabras reservadas
son palabras propias de VBA, tales como Sub, Function, los nombres de las funciones VBA (Inputbox,
Msgbox, Srq, etc), With, For, Next, entre otras. No se preocupe si no conoce todas las palabras
reservadas con las que cuenta VBA, si en algn momento intenta usar una de estas obtendr un error al
momento de tratar de ejecutar su programa.
Para hacer un poco ms descriptivos los nombres de las variables, los programadores a menudo combinan
maysculas y minsculas o el signo subrayado cuando necesitan usar un espacio en blanco. Por ejemplo:
tasa_interes, nombre_alumno, primerSumando, edad_alumno.
28
Desarrollo de Programas 1
Integer, debido a que el rango de valores que pueden guardar dichos tipos (Ver tabla Tipos de Datos en VBA) no
son los adecuados. Pero s podramos usar los tipos Long o String.
Sintaxis
Para declarar una variable en VBA se usa la palabra reservada Dim seguida de la lista de variables, cada cual con
su correspondiente tipo de dato, separadas por comas. El tipo de dato de una variable se indica con la palabra
reservada As.
Dim variable1 As tipo_dato1, variable2 As tipo_dato2, , variableN As tipo_datoN
Por ejemplo:
Declaracin de las variables precio_menu y tipo_de_cambio, ambas tipo Double.
Dim precio_menu As Double, tipo_de_cambio As Double
Dim direccin_universidad As String Declaracin de la variable direccion_universidad como tipo String.
Tambin se podra tener: z = z +1. Esta expresin podra causarle cierta confusin.
Cmo z puede ser igual a z+1? Esta expresin no dice que z sea igual a z+1, recuerde que no est
comparando valores, sino asignando. Lo que expresa es que z TOMA EL VALOR de z+1. Por ejemplo:
Si inicialmente z = 4, entonces esta expresin lo que hace es aumentar en 1 el valor de z (4) y luego otorgar se
resultado (5) a z.
Recuerde:
Primero se evala el lado derecho de la expresin y luego el valor final es asignado a la variable de la
izquierda.
En este tipo de expresiones, el smbolo = NO se usa como smbolo de IGUALDAD, sino como
operador de ASIGNACIN.
7.2. Constantes
7.2.1. Concepto
El valor de una variable puede cambiar mientras se ejecuta un subprograma, de all su nombre variable. En algunas
ocasiones se necesita hacer referencia a un valor que nunca cambia, una constante. Una constante es un objeto
cuyo valor permanece fijo, invariable. Si se intenta cambiar el valor de una constante en un procedimiento o
funcin, se producir un error.
29
Desarrollo de Programas 1
Por ejemplo:
Recordemos la sintaxis de Msgbox: MsgBox(prompt[, buttons][, title][, helpfile, context])
El argumento buttons usa algunas constantes, tiene estos valores:
Constante
VbOKOnly
VbOKCancel
VbAbortRetryIgnore
VbYesNoCancel
VbYesNo
VbRetryCancel
VbCritical
VbQuestion
VbExclamation
VbInformation
Valor
0
1
2
3
4
5
16
32
48
64
Descripcin
Muestra solamente el botn Aceptar.
Muestra los botones Aceptar y Cancelar.
Muestra los botones Anular, Reintentar e Ignorar.
Muestra los botones S, No y Cancelar.
Muestra los botones S y No.
Muestra los botones Reintentar y Cancelar.
Muestra el icono de mensaje crtico.
Muestra el icono de pregunta de advertencia.
Muestra el icono de mensaje de advertencia.
Muestra el icono de mensaje de informacin.
30
Desarrollo de Programas 1
31
Desarrollo de Programas 1
Por ejemplo:
Dim x As Double, y As Double
x=10
y=5
resultado = (x+y)*z
El valor de la variable resultado es 0, ya que al no declarar la variable z sta asume del tipo Variant con valor 0.
2. Al declarar las variables siempre debe de colocarle a cada una de ellas el tipo de dato asociado.
Por ejemplo: Si yo quisiera declarar tres variables enteras, entonces las formas correctas seran:
Dim a As Integer
Dim b As Integer
Dim c As Integer
O de manera alternativa: Dim a As Integer, b As Integer, c As Integer
Importante: Si declarara as, las variables a,b,c:
Dim a, b, c As Integer
Esta sera una forma incorrecta, pues las variables a y b sern variables de tipo Variant y solamente la variable
c es de tipo Integer.
Veamos el siguiente ejemplo:
Dim a, b, c As Integer
Sub Principal()
a = "hola"
MsgBox a
End Sub
Este procedimiento no genera ningn error de tipo ya que la variable a es de tipo Variant y no es Integer como
se deseaba.
8. Expresiones
Las constantes y variables pueden relacionarse mediante operaciones. A esta relacin la llamamos Expresin. Al
evaluar una expresin, sta nos devuelve un valor. Dependiendo de este valor, una expresin puede ser lgica o
aritmtica.
32
Desarrollo de Programas 1
Dim x As String
Dim y As String
Dim z As String
Dim w As String
x = "Hola"
y = " Amigos"
'Operacin de concatenacin de cadenas usando el operador &
z=x&y
MsgBox z Se mostrar la cadena: Hola Amigos
'Operacin de concatenacin de cadenas usando el operador +
w=x+y
MsgBox w Se mostrar la cadena: Hola Amigos
End Sub
Nota:
Ambos operadores podran ser usados sin distincin para el caso del tipo de dato String.
Recuerde:
La expresin (X<Y) AND (Z^2 = 4) es un tipo de dato lgico; sin embargo (X<Y) AND (Z^2 = 4) es un
tipo de dato texto (atencin a las comillas).
33
Desarrollo de Programas 1
A los parmetros que se usan en la declaracin del subprograma procedimiento1: x e y se les llama
parmetros formales.
Desde el procedimiento principal se les invocar de la siguiente manera:
Sub programa_principal()
Dim a As Integer
Dim b As Double
Dim z As Integer
Dim w As Double
Dim resultado As Double
.....
Resultado = fun1(z,w)
.......
Call procedimiento1 (a, b)
End Sub
Al realizar la invocacin o llamada al subprograma que tiene parmetros, se pasan los valores que realmente se
quieren usar en dicho subprograma. Por esta razn, a estos parmetros se les llama parmetros reales.
En el ejemplo, en el procedimiento programa_principal se invoca al procedimiento procedimiento1, pasando
como parmetro reales a y b. y se invoca a la funcin fun1 pasando como parmetros reales z y w.
Recuerde:
Los parmetros reales que pueden ser pasados son datos constantes, variables o expresiones.
Por ejemplo:
Se desea hallar la suma de los dgitos de un nmero de tres cifras almacenado en la celda B1 y muestra en la celda
B2 el resultado de esta suma.
34
Desarrollo de Programas 1
Los parmetros
que se pasan
son variables
Los parmetros
que se pasan
son valores fijos
Tambin se pueden
variables,
valores
constantes.
pasar
fijos,
35
Desarrollo de Programas 1
10.1.1. Anlisis
Datos de entrada: radio, alturacono, alturacilindro
Dato de salida: volumenlapiz
Frmulas:
Volumendelborrador=(4/3**radio2)/2
Volumendelcuerpo= *radio2 * alturacilindro
Volumendepunta=(1/3**radio2)* alturacono
Volumenlapiz = Volumendelborrador + volumendelcuerpo + volumendepunta
Diagrama de mdulos:
36
Desarrollo de Programas 1
2*q *
m
Una vez atravesada esta zona, cada protn se encuentra dentro de un campo magntico (B) el mismo que ejerce
una fuerza (F) sobre el protn, llamada fuerza de Lorentz:
F q*v* B
Debido a esta fuerza, la trayectoria del protn deja de ser una lnea recta para ser una curva con radio de
curvatura (r), el mismo que puede obtenerse de la siguiente frmula:
m *v2
r
Un alumno desea hallar el radio de curvatura de la trayectoria de un protn conociendo su carga y masa, la
diferencia de potencial de la zona que atraviesa ( ) y el campo magntico (B) en el que se encontrar luego de
atravesar dicha zona.
Adems se cuenta con la siguiente Hoja en Excel:
Se pide implementar en VBA la solucin al problema planteado usando el siguiente Diagrama de Mdulos:
10.2.1. Anlisis
Datos de entrada: carga(q), masa(m), potencial( ) y campo magntico(B).
Datos de salida: radio
Frmulas:
=
m 2
37
Desarrollo de Programas 1
10.3.1. Anlisis
Datos de entrada: radioBase, radioTope, altura, cantMacetas, presupuesto
Dato de salida: cantAbono, cantFertilizante, volMaceta, costoxmaceta, costoTotal, esViable
Frmulas:
volMaceta = *altura*( radioTope2 + radioBase2 + radioBase*radioTope ) / 3
cantAbono = 0.8*volMaceta
cantFertilizante = 0.2*volMaceta
costoxmaceta = cantAbono*54 + cantFertilizante*80
costoTotal = costoxmaceta*cantMacetas
esViable = (presupuesto >= costoTotal)
38
Desarrollo de Programas 1
Diagrama de mdulos:
10.3.2. Codificacin
39
Desarrollo de Programas 1
b.
c.
Realizar un subprograma que reciba como parmetro la temperatura en grados Celsius y devuelva la
temperatura correspondiente en grados kelvin. Recuerde que: K = C + 273
d.
Realizar un subprograma que calcule el volumen de un gas teniendo como parmetros de entrada la presin,
el nmero de moles de molcula, la constante R y la temperatura en grados kelvin.
e.
Lea la masa atmica del compuesto A, la masa atmica del compuesto B, el nmero de tomos de A, el
nmero de tomos de B, el peso en gramos, la presin en atm, la constante R y la temperatura en grados
Celsius.
Utilizando uno de los subprogramas anteriores, calcule la masa molecular del compuesto AxBy.
Utilizando uno de los subprogramas anteriores, calcule el nmero de moles de molcula equivalente para el
peso ledo.
Utilizando uno de los subprogramas anteriores, convierta a grados Kelvin la temperatura leda.
Utilizando uno de los subprogramas anteriores, calcule el volumen que ocupa la Presin leda, el nmero de
moles de molculas hallado, la constante leda y la temperatura convertida en el acpite anterior a grados
Kelvin.
Escriba la masa molecular, el nmero de moles de molculas y el volumen en la celdas correspondientes, segn
se muestra en la figura.
40
Desarrollo de Programas 1
Implemente un programa en VBA que permite calcular los valores pedidos y lea los datos necesarios de una hoja
de clculo como se presenta a continuacin:
NOTA: (a) Considerar que la aceleracin de la gravedad (g) es 9.8 m/s. (b) La funcin Sin de VBA requiere que el
ngulo parmetro est en radianes.
2.
3.
4.
Nota: Lea las denominaciones de las monedas de las celdas. Las denominaciones siempre aparecern ordenadas de
menor a mayor.
12. Bibliografa
- Marcela Genero Bocco. Excel con Visual Basic Para Aplicaciones (VBA).Noviembre 2002.
- CAIR, Osvaldo. Metodologa de la programacin. 2a edicin. Mxico: Alfaomega, 2003.
- Excel VBA Programming for Dummies. John Walkenbach Wiley Publishing, Inc. (2004).
- Sitio web de Microsoft Office Online: http://office.microsoft.com (2010)
13. Actualizacin:
28/04/2015.
41