Professional Documents
Culture Documents
2013 1
Tabla de Contenido
1. MICROSOFT ACCESS 2010 .......................................................................................................................4
1.1. INTRODUCCIN .....................................................................................................................................4
1.2. ACCESS ES UN SABD ..............................................................................................................................4
1.3. TABLAS, CAMPOS Y REGISTROS ................................................................................................................4
1.4. CLAVE PRINCIPAL ...................................................................................................................................5
1.5. ESTRUCTURA DE ARCHIVOS EN ACCESS ...................................................................................................6
1.6. CREACIN DE UNA BASE DE DATOS .......................................................................................................6
1.6.1. Base de Datos en Blanco................................................................................................................6
1.6.2. A partir de una plantilla .................................................................................................................6
1.7. CREACIN DE TABLAS ............................................................................................................................7
1.7.1. En Diseo de tabla ........................................................................................................................7
1.7.2. Utilizando la Plantilla de tabla ........................................................................................................7
1.7.3. Usando Diseo de Tabla ................................................................................................................8
1.7.4. Usando Lista de SharePoint ............................................................................................................8
1.8. RELACIONAR TABLAS ..............................................................................................................................8
1.9. INTEGRIDAD REFERENCIAL: .....................................................................................................................9
1.10. CREACIN DE CONSULTAS.................................................................................................................10
1.10.1. En Diseo de consultas ..............................................................................................................10
1.10.2. Utilizando el asistente para consultas .........................................................................................12
1.11. USO DE OPERADORES Y COMODINES EN ACCESS .................................................................................12
1.11.1. Operadores de comparacin ......................................................................................................12
1.11.2. Uso de comodines ......................................................................................................................12
1.12. CREACIN DE FORMULARIOS..............................................................................................................13
1.12.1. Utilizando el asistente ................................................................................................................13
1.13. EJERCICIO ...........................................................................................................................................15
2. VISUAL BASIC FOR APPLICATIONS - VBA ......................................................................................17
3. CREACIN DE UN LIBRO DE EXCEL .................................................................................................18
3.1. SIN MACROS .........................................................................................................................................18
3.2. CON MACROS ......................................................................................................................................18
3.3. OTROS FORMATOS ...............................................................................................................................19
4. TRABAJANDO CON EL EDITOR DE VISUAL BASIC ......................................................................19
4.1. INSERTAR FICHA PROGRAMADOR .........................................................................................................19
4.2. EL EDITOR DE VISUAL BASIC .................................................................................................................20
4.2.1. Men ..........................................................................................................................................22
4.2.2. Barra de Herramientas ................................................................................................................22
4.2.3. Explorador de Proyectos ...............................................................................................................23
4.2.4. Cdigo .........................................................................................................................................23
4.2.5. Ventana Inmediata ......................................................................................................................24
4.2.6. Ventana de Propiedades ...............................................................................................................24
4.3. LECTURA Y ESCRITURA DE DATOS .........................................................................................................24
4.3.1. Lectura de datos desde celdas de Excel ........................................................................................24
4.3.2. Escritura de datos desde celdas de Excel ......................................................................................25
4.3.3. Forma Simple:..............................................................................................................................26
4.3.4. Lectura y escritura desde VBA ......................................................................................................27
4.4. OPERACIONES ARITMTICAS EN VBA ....................................................................................................27
5. CREACIN DE SUBPROGRAMAS ........................................................................................................28
5.1. REGLAS PARA NOMBRAR SUBPROGRAMAS ..............................................................................................29
5.2. COMENTARIOS EN LOS SUBPROGRAMAS ................................................................................................29
5.3. CREACIN DE PROCEDIMIENTOS ...........................................................................................................29
5.3.1. Usando el VBE .............................................................................................................................29
5.3.2. Ejecucin de un procedimiento .....................................................................................................30
5.3.3. Mediante el uso de la grabadora de macros .................................................................................30
5.3.4. Ejecucin de una macro ...............................................................................................................33
Desarrollo de Programas 1
5.4. CREACIN DE FUNCIONES ...................................................................................................................34 5.4.1. Funciones VBA .............................................................................................................................34 5.4.2. Funciones de Excel .......................................................................................................................35 5.4.3. Funciones personalizadas .............................................................................................................35 6. EJERCICIOS RESUELTOS ......................................................................................................................41 6.1. PROBLEMA DEL LPIZ ............................................................................................................................41 6.1.1. Definicin y Anlisis ......................................................................................................................41 6.1.2. Implementacin (Codificacin) ......................................................................................................42 6.1.3. Resultado ....................................................................................................................................42 6.2. CHOQUE DE PARTCULAS .....................................................................................................................42 6.2.1. Definicin y Anlisis ......................................................................................................................43 6.2.2. Implementacin (Codificacin) ......................................................................................................44 6.2.3. Resultado ....................................................................................................................................44 6.3. MANTENIMIENTO DE MACETAS (ADAPTADO DE LABORATORIO 4 2012-1) .....................................44 6.3.1. Definicin ..................................................................................................................................45 6.3.2. Anlisis ......................................................................................................................................45 6.3.3. Codificacin...............................................................................................................................46 7. EJERCICIOS PROPUESTOS ...................................................................................................................47 7.1. VOLUMEN DEL GAS .............................................................................................................................47 7.2. MOVIMIENTO PARABLICO .................................................................................................................48 8. BIBLIOGRAFA .........................................................................................................................................48 9. ACTUALIZACIN: ...................................................................................................................................48
Desarrollo de Programas 1
Verdadero o Falso.
Desarrollo de Programas 1
de campos, y en cada uno de los ellos se guarda un dato que puede ser numrico, alfanumrico, fecha, moneda, si/no, memo, entre otros. Un campo es cada una de las columnas de la tabla y el nombre de la columna es el nombre del campo. Un registro es cada una de las filas de la tabla y est formado por el dato de cada uno de los campos almacenados en una misma operacin.
Tabla: Alumno. Campos: CodigoAlumno, NombreAlumno, ApellidoAlumno, Direccin, Telfono, Ciudad, Pas. Registros: Esta tabla consta de 3 registros; es decir, cada registro contiene los datos de cada uno de los alumnos (fjese en las filas de la tabla). Adems, cada campo debe indicar su tipo de dato y este debe concordar con aquello que se almacenar en l, tal como se ve en el siguiente ejemplo:
De esta manera, una base de datos es un conjunto de tablas que se utilizan para gestionar un determinado tipo de informacin. Est constituida por la estructura de informacin (tablas, campos y tipo de dato del campo) y la informacin contenida en ella. Aunque es frecuente denominar a Access como una base de datos, esto no es exacto. Access es una aplicacin de gestin de base de datos. Es la misma diferencia que existe entre un procesador de textos como Word y un documento de Word.
Desarrollo de Programas 1
Para seleccionar la clave principal, se tienen dos opciones: a. Estando en Vista Diseo, seleccionar la fila o filas que contienen los campos elegidos como clave principal. Luego, en la Cinta de Opciones, pulsar la ficha Diseo y en el grupo Herramientas hacer clic en la opcin clave principal. b. Estando en Vista Diseo, seleccionar la fila o filas que contienen los campos elegidos como clave principal. Luego, hacer clic derecho y escoger la opcin de clave principal del men desplegable.
Es importante seleccionar la clave principal porque es el campo que nos va a permitir relacionar las tablas. Nota: Por defecto Microsoft Access define una clave principal para una nueva tabla (un campo llamado Id). Si no
desea que dicho campo sea la clave principal, debe eliminarlo y luego debe crear el o los campos que desee que sean la clave principal de la tabla.
Al finalizar la creacin de la base de datos se mostrar el entorno de Access con las diferentes pestaas en la cinta de opciones que permitirn el resto del trabajo.
Desarrollo de Programas 1
d. e.
Una vez ingresados los campos, presionar el botn Guardar de la Barra de herramientas de acceso rpido. Ingresar el Nombre de la tabla y presionar el botn Aceptar.
Desarrollo de Programas 1
b. c.
Escoger una de las tablas ejemplo (Contactos, Tareas, etc.) Si usted desea, puede modificar y/o agregar campos a la tabla creada entrando a la opcin Vista de Diseo. Para ir a la Vista de Diseo, seleccionar la tabla creada, haga clic derecho y seleccione la opcin Vista de Diseo. d. Una vez ingresados los campos, presionar el botn Guardar de la Barra de herramientas de acceso rpido.
Para relacionar dos tablas debe realizar los siguientes pasos: a. En la Cinta de Opciones pulsar la ficha Herramientas de bases de datos y en el grupo Relaciones hacer clic en la opcin Relaciones. b. Seleccionar las tablas que se desean relacionar. c. Presionar el botn Agregar y luego presionar el botn Cerrar. d. Seleccionar el campo o campos que componen la llave primaria de la tabla maestra; es decir, de aquella tabla que contiene toda la informacin respecto a esta llave (para el ejemplo, se seleccionar el campo cdigo de la tabla Alumnos). Manteniendo la seleccin, dirigirse hacia el campo de la tabla al cual se desee relacionar y soltar la seleccin sobre este campo (para el ejemplo, se soltara sobre el campo alumno de la tabla CursoxAlumno). e. En ese momento se muestra grficamente la equivalencia entre campos que se quiere realizar: Tabla Alumnos: Cdigo, Tabla CursosxAlumno: Cdigo. Cuando se trata de llaves primarias, en el borde de la tabla aparecer el cono de una llave al costado del campo llave primaria o campo nico.
Desarrollo de Programas 1
f.
Por ltimo, aparecer una ventana que mostrar el tipo de relacin que desea manejar.
Una vez establecida la relacin, cada vez que se ingresen datos en la tabla relacionada se verificar si estos estn en la tabla maestra (para el ejemplo, cada vez que se ingresen datos a CursoxAlumno verificar que existan el curso y el alumno que se desea registrar.)
Identidad Referencial
El procedimiento anterior se debe seguir para cada par de campos relacionados en la base de datos, tal como se muestra a continuacin:
d.
Desarrollo de Programas 1
Solucin: La tabla a usar es Alumnos. El campo nombre debe coincidir con la cadena Carlos, entonces el criterio en la consulta ser dicha cadena. La tabla Alumnos contiene los siguientes datos:
La consulta ser:
10
Desarrollo de Programas 1
Ejemplo2: Se desea mostrar todos los cursos que se empiecen con la letra C.
Solucin: La tabla a usar es Cursos. El campo nombre debe coincidir inicialmente con la cadena C y el resto de caracteres puede ser cualquiera, por ello es necesario utilizar un comodn (Ver en el punto 3.11.2 Uso de Comodines). Entonces, el criterio en la consulta ser dicha cadena, seguida del comodn *, as: C* La tabla Cursos contiene los siguientes datos:
La consulta ser:
11
Desarrollo de Programas 1
12
Desarrollo de Programas 1
Nota:
Si utiliza caracteres comodn para buscar otros caracteres comodn como asterisco (*), interrogacin de cierre (?), signo de nmero (#), corchete de apertura ([) o guin (-), debe incluir el elemento que est buscando entre corchetes. Si busca una exclamacin de cierre (!) o un corchete de cierre (]), no es necesario que lo incluya entre corchetes
13
Desarrollo de Programas 1
c. d.
e. f.
g. h.
Presionar el botn Siguiente. Ingresar el nombre del formulario y del sub-formulario si lo tuviera.
i.
Nota: Usted debe practicar el uso de formulario con subformulario y formularios vinculados y consultas.
14
Desarrollo de Programas 1
1.13. Ejercicio
El siguiente ejercicio muestra una base de datos para manejar el registro de alumnos, cursos y profesores de primer ciclo de Estudios Generales Ciencias. Los datos a almacenar sern los siguientes: Tabla Alumnos Campo Cdigo Nombres Apellidos Cdigo Nombre Cdigo Nombres Apellidos Curso Horario Profesor AlumnosCursos Alumno Curso Horario Tipo de dato Nmero Texto Texto Texto Texto Nmero Texto Texto Texto Nmero Nmero Nmero Texto Nmero Descripcin Llave principal. Este campo almacenar los cdigos de los alumnos. Este campo almacenar los nombres de los alumnos. Este campo almacenar los apellidos de los alumnos. Llave principal. Este campo almacenar los cdigos de los cursos. Este campo almacenar los nombres de los cursos. Llave principal. Este campo almacenar los cdigos de los profesores. Este campo almacenar los nombres de los profesores. Este campo almacenar los apellidos de los profesores. Llave principal. Este campo almacenar el cdigo de curso. Llave principal. Este campo almacenar el nmero de horario del curso. Este campo almacenar el cdigo del profesor del horario. Llave principal. Este campo almacenar el cdigo del alumno matriculado en el horario del curso. Llave principal. Este campo almacenar el cdigo de curso. Llave principal. Este campo almacenar el nmero de horario del curso.
Cursos
Profesores
CursosHorarios
a.
b.
15
Desarrollo de Programas 1
Como podemos observar, las tablas AlumnosCursos y CursosHorarios cuentan con una llave primaria compuesta de ms de un campo. Recuerde que esto se consigue seleccionando los campos y haciendo clic en la opcin clave principal. c. Construyendo relaciones:
16
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. Si deseamos referirnos al libro Libro1, contenido en el objeto Application (Excel), escribiremos: Application.Workbooks(Libro1.xlsx) b. Si quisiramos referirnos a la Hoja Hoja1 del Libro1 escribiremos: Application.Workbooks(Libro1.xlsx).Sheets(Hoja1) 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). 17
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
El archivo grabado tendr la extensin xlsx. La "x" significa un archivo XML que NO TIENE MACROS.
Formato Libro de Excel Extensin .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).
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).
18
Desarrollo de Programas 1
.csv
.ods
de
.xla .xlw
19
Desarrollo de Programas 1
b.
c. d.
En el bloque de Personalizar cinta de opciones seleccionar la opcin Programador para activar la visualizacin de esta ficha. Presionar el botn Aceptar.
20
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
21
Desarrollo de Programas 1
En la cual las partes que la componen son: 1.- Men 2.- Barra de Herramientas 3.- Explorador de Proyectos 4.- Cdigo 5.- Ventana Inmediato 6.- Ventana de Propiedades
4.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.
Las opciones que se muestran, de izquierda a derecha son: Ver Microsoft Excel: Opcin del men Ver Insertar UserForm: Si da clic en la flechita que est a su costado, observar esta opcin le sirve para insertar un formulario, un mdulo, un mdulo de clase o un procedimiento. Esta opcin corresponde al men Insertar. Guardar libro: Una de las opciones del men Archivo. Cortar: Una de las opciones del men Edicin. Copiar: Una de las opciones del men Edicin. Pegar: Una de las opciones del men Edicin. Buscar: Una de las opciones del men Edicin. Deshacer: Una de las opciones del men Edicin. Rehacer: Una de las opciones del men Edicin. Ejecutar Sub/UserForm: Una de las opciones del men Ejecutar.
22
Desarrollo de Programas 1
Interrumpir: Una de las opciones del men Ejecutar. Restablecer: Una de las opciones del men Ejecutar. Modo de diseo: Una de las opciones del men Ejecutar. Explorador de proyectos: Una de las opciones del men Ver. Ventana de propiedades: Una de las opciones del men Ver. Examinador de Objetos: Una de las opciones del men Ver. Cuadro de Herramientas: Una de las opciones del men Ver. Ayuda.
El explorador nos muestra un proyecto correspondiente al libro de Excel llamado Libro1, el cual tiene 3 hojas llamadas Hoja1, Hoja2 y Hoja3, respectivamente. Adems, nos muestra la carpeta mdulos la cual contiene el mdulo llamado Mdulo1. No se preocupe si no ha comprendido bien an el concepto de objeto; este se ir aclarando ms adelante.
4.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:
23
Desarrollo de Programas 1
24
Desarrollo de Programas 1
En este caso, debe notar que el nmero 1 se coloca pues es el ndice que le corresponde a la columna A.
e.
Regrese a la primera hoja del libro en el que est trabajando y coloque datos en las celdas A1, B1 y C1:
25
Desarrollo de Programas 1
f.
Ejecute dicho procedimiento, en la Cinta de opciones, ficha Programador seleccione la opcin Macro. A continuacin, se listarn las macros disponibles y seleccione el procedimiento que queremos ejecutar (duplica_valores). Ver que se llenarn las celdas A2, B2 y C2:
26
Desarrollo de Programas 1
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.
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:
27
Desarrollo de Programas 1
Operacin Potenciacin Negacin Multiplicacin Divisin Divisin Entera (devuelve el cociente de una divisin) Mdulo o Residuo de Divisin Entera Adicin Substraccin
Operador ^ * / \ mod + -
Precedencia o Prioridad 1 2 3 3 4 5 6 6
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. A continuacin se evaluarn algunas expresiones aplicando la prioridad de operadores: 1) R = 5^2 *4 + -50/2 -4 De acuerdo con la prioridad de operadores, en esta expresin primero deber operarse la potencia, es decir, 5^2=25, luego se aplicar la multiplicacin de este resultado con 4, 25*4=100, despus se resuelve la divisin 50/2=-25. De este modo queda la expresin: R = 100 + -25 -4, y como los operadores de suma y resta tienen la misma precedencia se empieza a operar de izquierda derecha, primero la suma y luego la resta. Quedando como resultado R = 71 2) R = 20 / 3 17 Mod 4 En esta expresin se debe operar primero la divisin, quedando la expresin R = 6.66666667 17 mod 4 Como el residuo tiene mayor prioridad que la resta, se procede a operar el residuo de dividir 17 entre 4, el cual da como resultado 1. De esta forma queda la expresin: R = 6.66666667 1 y se tiene como resultado final R=5.66666667 3) R = 5 * (5 1 + 8) En esta expresin debe operarse primero lo que est dentro de los parntesis (respetando la prioridad de los operadores) quedando la expresin R = 5 *12 lo que da como resultado R = 60
5. 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
28
Desarrollo de Programas 1
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.
29
Desarrollo de Programas 1
Luego, deber escribir el procedimiento en la ventana Cdigo que se despliega al lado derecho de la pantalla. Recuerde, adems, que la sintaxis de un procedimiento es la siguiente: Sub Nombre ([lista de argumentos]) [instrucciones] End Sub Lo primero que deber recordar es que el nombre del procedimiento sigue las mismas reglas que se especificaron en el apartado 5.1 Reglas para nombrar subprogramas. Adems, una lnea de cdigo o instruccin VBA puede ser tan larga como usted desee; sin embargo, tal vez quiera usar el carcter de continuacin de lnea para romper lneas de cdigo muy largas. Para continuar una instruccin de una lnea a otra, al final de la primera lnea deber dejar un espacio y colocar el smbolo raya abajo ( _ ). Luego, contine la oracin en el siguiente rengln. Por ejemplo: 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 !!!".
30
Desarrollo de Programas 1
d. e.
Para detener la grabacin deber hacer clic en el botn Detener grabacin. Luego, deber ingresar al editor de Visual Basic. En la ventana de propiedades deber desplegar la carpeta Mdulos y observar que hay un mdulo llamado Mdulo1:
f.
Al hacer doble clic sobre Mdulo1 aparecer al lado derecho una pantalla similar a la siguiente:
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.
31
Desarrollo de Programas 1
c.
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 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: 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. Respecto a la macro Macro2, observamos el siguiente cdigo: Sub Macro2() ' Macro2 Macro ' Macro grabada el 21/04/2007 Range("A1:A3").Select Selection.ClearContents End Sub 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.
32
Desarrollo de Programas 1
Seleccionar el cono Insertar (resaltado en el dibujo anterior), luego de lo cual se desplegar un cuadro de controles como el mostrado:
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.
33
Desarrollo de Programas 1
* 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.
34
Desarrollo de Programas 1
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
2
( x 2 1)
( 1 x2 1 )
arccos(x) = arctan
1 x2 ) x
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) Se lee el radio de la celda A1 'En este caso Pi( ) es una funcin de Excel 'Round( ) es una funcin VBA. Tambin se pudo obviar la 'instruccin anterior y colocar de frente la expresin: a = Round( p * r ^ 2 , 2)
35
Desarrollo de Programas 1
Function Nombre_funcion([lista de argumentos separados por comas]) [instrucciones] Nombre_funcion = valor End Function El nombre de la funcin debe seguir las mismas reglas que las que se especificaron en la NOTA del apartado 6.1.1 Creacin de Procedimientos Mediante el Uso de Macros. La instruccin ms importante en una funcin es la ltima sentencia, en la que se devuelve el valor que calcula la funcin. Esta instruccin nunca debe faltar y siempre debe ser la ltima instruccin de la funcin. Revisemos algunos ejercicios, pero antes recordemos que en el curso podremos usar nuestras funciones de dos formas: Forma 1: Invocando directamente la funcin en una celda en Excel. Forma 2: Desde un procedimiento en VBA. Ejemplo 1: Multiplicando nmeros A continuacin se muestra un ejemplo de funcin personalizada que multiplica dos nmeros. En el VBE escribiremos:
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:
Ejemplo 2: Calculando el nmero de dgitos Tambin podramos crear una funcin que determine el nmero de dgitos de un nmero entero diferente de cero. Para ello, podramos aplicar el siguiente algoritmo: - Hallaremos el logaritmo del nmero en base 10. - Luego, extraeremos la parte entera del resultado antes obtenido. - Finalmente, sumaremos 1 al resultado anterior. As por ejemplo, si el nmero fuera 999, aplicando el algoritmo tenemos: - log(999), cuyo resultado es 2.99957 - Luego, extraemos la parte entera de 2.99957, es decir 2. - Finalmente, sumamos 1 al resultado anterior: 2 + 1, lo que da como resultado 3. Que es, efectivamente, el nmero de dgitos que tiene 999.
36
Desarrollo de Programas 1
Usaremos esta funcin desde el libro Excel colocndola como parte de la frmula en la celda D1:
Ejemplo 3: Calculando el rea de un crculo Otra funcin personalizada podra ser una que se encargue de calcular el rea de un crculo teniendo como argumento el radio.
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:
37
Desarrollo de Programas 1
b. c.
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:
d. e.
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. El resultado obtenido ser:
Ejemplo 3: Evaluando expresiones Desarrollaremos un subprograma para calcular el valor de M, utilizaremos los datos de las celdas de Excel, como se muestra:
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:
38
Desarrollo de Programas 1
Luego, se podra crear un procedimiento que se encargue de: Leer los datos de las celdas B4, C4, D4 y E4 Calcular M usando la funcin hallar_M Escribir el resultado en la celda F4
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:
39
Desarrollo de Programas 1
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:
Seleccione el procedimiento Imprimir_formula y presione Aceptar. De esta manera, se ha relacionado (enlazado) el botn al procedimiento y cada vez que presionemos dicho botn se ejecutar el procedimiento Imprimir_formula. Finalmente, puede cambiar el texto que aparece en el botn. Para ello, deber hacer clic derecho en el botn y seleccionar la opcin Modificar Texto. Con la tecla suprimir borre el contenido actual y luego escriba Calcular M y d clic en cualquier parte de la hoja. Tendr algo similar a la siguiente pantalla:
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:
40
Desarrollo de Programas 1
6. Ejercicios Resueltos
6.1. Problema del Lpiz
Un alumno desea calcular el volumen de un lpiz. Para ello, identifica tres secciones: la punta del lpiz (forma cnica), el cuerpo del lpiz (forma cilndrica) y el borrador (forma de media esfera), tal como se muestra en la figura:
Se pide implementar en VBA: a. Un subprograma que lea los datos de entrada desde las celdas en Excel como se muestra en la figura anterior. b. Un subprograma que calcule el volumen de la punta del lpiz. c. Un subprograma que calcule el volumen del cuerpo del lpiz. d. Un subprograma que calcule el volumen del borrador del lpiz. e. Un subprograma que calcule el volumen total del lpiz. Para ello deber utilizar los subprogramas anteriores. f. Un subprograma que muestre el resultado. g. Un subprograma principal que, utilizando los subprogramas anteriores, ayude a resolver el problema planteado.
41
Desarrollo de Programas 1
6.1.3. Resultado
v=
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
42
Desarrollo de Programas 1
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 F= 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: a. Un subprograma Leer_datos que lea los datos de entrada desde las celdas en Excel como se muestra en la figura anterior. b. Un subprograma Hallar_Velocidad que calcule la velocidad. c. Un subprograma Hallar_Fuerza que calcule la fuerza de Lorentz. d. Un subprograma Hallar_Radio que calcule el radio de curvatura. e. Un subprograma Imprimir_datos que permita mostrar el radio de curvatura. f. Un subprograma principal que utilizando los subprogramas anteriores ayude a resolver el problema planteado.
Datos de entrada: carga(q), masa(m), potencial( ) y campomagntico(B). Datos de salida: radio Se implementa el siguiente diagrama de mdulos:
Calcular datos
Leer datos
Hallar Velocidad
Hallar Fuerza
Hallar Radio
Imprimir datos
43
Desarrollo de Programas 1
6.2.3. Resultado
44
(14.0 ptos.) Teniendo como base un presupuesto asignado, se desea conocer la viabilidad del proyecto del mantenimiento de las macetas de un jardn, teniendo la forma de un tronco de cono. El costo por maceta debe ser calculado en base a la cantidad de abono y fertilizantes necesarios para llenar al tope cada una de las macetas, siendo la proporcin del volumen en la maceta en un 80% de abono y en INF117 Introduccin a la Computacin Desarrollo de Programas 1 un 20% de fertilizante. Adems se sabe que el costo del metro cbico de abono cuesta 54 nuevos soles y el del metro cbico de fertilizante 80 nuevos soles.
ello debe implementar en VBA Para Para ello debe implementar en VBA 1. Un subprograma CalcularVolumen que calcule el volumen de una maceta 1. (1.0 pto.) Un subprograma CalcularVolumen que reciba un radio base, un radio tope y una altura, 2. Un subprograma CalcularCantidades que calcule el volumen y calcule el volumen de una maceta. Utilice la siguiente frmula: de una maceta, la cantidad de abono y la cantidad de fertilizante que se utilizar en dicha 2maceta. 2 Volumen de la maceta = *h*( RTope + RBase + RBase*RTope ) / 3 3. Un subprograma CalcularCostoMaceta que calcule el costo de una maceta. 4. 2. Un subprograma EsProyectoViable que permita determinar si es parmetros viable la realizacin del proyecto del (4.0 ptos.) Un subprograma CalcularCantidades que reciba como la altura, el radio mantenimiento dedel lastope, macetas. Secalcule dice que es viablede si el presupuesto asignado suficiente base y el radio y que el volumen dicha maceta, la cantidades de abono y para la realizar de fertilizante que se utilizar en una maceta. Utilice un subprograma anterior. el cantidad mantenimiento. 5. Un subprograma principal AnalizarViabilidad que utilizando los subprogramas anteriores, segn 3. (1.0 ptos.) Un subprograma CalcularCostoMaceta que reciba como parmetros la cantidad de corresponda: fertilizante y la cantidad de abono necesarios para llenar la maceta, y calcule el costo de una a) maceta Lea los . datos de entrada de las celdas correspondientes indicadas en la figura. b) Calcule el volumen total, la cantidad de abono y fertilizante de una maceta. Calcule el costo de una maceta. 4. c) (2.0 ptos.) Un subprograma EsProyectoViable que reciba como nicos parmetros el disponible el proyecto. costo requerido para el mantenimiento de las macetas y permita d)presupuesto Calcule el costo totalydel e) Determine la viabilidad del proyecto. f) Muestre los resultados en las celdas correspondientes tal como se muestra CONTINA en la figura.
6.3.1. Definicin
Explicacin: Analizar la viabilidad del mantenimiento de las macetas calculado, para ello, la cantidad de abono y fertilizante a usar, el volumen de cada maceta, el costo por maceta y el costo total del proyecto para, finalmente, indicado si es viable el proyecto o no. 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)
6.3.2. Anlisis
Se implementa el siguiente diagrama de mdulos:
45
Desarrollo de Programas 1
6.3.3. Codificacin
46
Desarrollo de Programas 1
7. Ejercicios Propuestos
7.1. Volumen del gas
Para calcular el volumen V que ocupa en un recipiente rgido, G gramos del gas AxBy a TC y a P atm. De presin, se utiliza la siguiente frmula: PV = nRT Adems, se tiene la siguiente hoja de clculo:
Se desea calcular la masa molecular del compuesto AxBy mediante la siguiente frmula, (masa_atomica_A*Nmero_tomos_A + masa_atomica_B * Nmero_tomos_B ) para luego calcular el nmero de moles de molculas (Cantidad_gramos / masa_molecular_compuesto) para determinado peso del gas y finalmente hallar el volumen que ocupa dicho gas a cierta presin y temperatura. Para ello, se pide: a. Realizar un subprograma que calcule la masa molecular de un compuesto formado por 2 elementos A y B, teniendo como parmetros de entrada la masa atmica de A, el nmero de tomos de A (x), la masa atmica de B, el nmero de tomos de B (y). Realizar un subprograma que calcule el nmero de moles de molcula teniendo como parmetros de entrada el peso(en gramos) del compuesto y la masa molecular del compuesto. 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 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. Realizar un subprograma principal que: 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.
b. c. d. e.
47
Desarrollo de Programas 1
f.
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. Finalmente, el botn Realizar Clculos deber llamar al subprograma anterior.
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.
8. 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)
9. Actualizacin:
01/05/2013.
48