Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Programacion de Macros de Excel utilizando VBA, Ejercicios de Programación Funcional

Programacion de Macros de Excel utilizando VBA

Tipo: Ejercicios

2018/2019

Subido el 04/12/2019

danilo-fujitsu-morales-vargas
danilo-fujitsu-morales-vargas 🇵🇪

5

(1)

2 documentos

1 / 52

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
TEMA 6
PROGRAMACIÓN DE MACR
OS DE EXCEL UTILIZAN
DO VISUAL BASIC FOR
APPLICATIONS
TEMA 6
1º Grado en Ingeniería Química
|
Laura Briones Gil
TEMA 6 PROGRAMACIÓN DE MACROS DE EXCEL
UTILIZANDO VISUAL BASIC FOR APPLICATIONS
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34

Vista previa parcial del texto

¡Descarga Programacion de Macros de Excel utilizando VBA y más Ejercicios en PDF de Programación Funcional solo en Docsity!

TEMA 6

1º Grado en Ingeniería Química | Laura Briones Gil

TEMA 6

PROGRAMACIÓN DE MACROS DE EXCEL

UTILIZANDO VISUAL BASIC FOR APPLICATIONS

Contenido

    1. INTRODUCCIÓN A LAS MACROS DE EXCEL
    • 1.1 LA GRABADORA DE MACROS
    • 1.2 SEGURIDAD DE MACROS
    1. PRINCIPIOS BÁSICOS DE PROGRAMACIÓN EN VBA
    • 2.1 PROGRAMACIÓN ORIENTADA A OBJETOS
    • 2.2 EL EDITOR DE VISUAL BASIC
    • 2.3 TIPOS DE ERRORES EN VBA
    1. PROGRAMACIÓN EN VBA
    • 3.1 VARIABLES
    • 3.2 ENTRADA DE DATOS Y EMISIÓN DE RESULTADOS
    • 3.3 FUNCIONES
    • 3.4 ESTRUCTURAS DE CONTROL DE FLUJO
    1. FORMULARIOS Y CONTROLES
  • ANEXO:

La Ficha Programador tiene el siguiente aspecto:

  • El Grupo Código contiene los comandos necesarios para inicial el Editor de Visual Basic donde se puede escribir directamente código VBA. También permite ver la lista de macros disponibles para poder ejecutarlas o eliminarlas. También contiene el comando Grabar Macro, que permite crear una nueva macro sin necesidad de conocer programación en VBA.
  • El Grupo Complementos permite habilitar y administrar complementos como el Solver.
  • El Grupo Controles permite agregar controles especiales a una hoja de Excel, tales como botones, casillas de verificación, botones de opciones, etc.
  • El Grupo XML permite trabajar con ficheros XML.
  • El Grupo Modificar contiene únicamente el comando Panel de Documentos.

1.1 LA GRABADORA DE MACROS

La Grabadora de Macros es la forma más sencilla de crear una macro. Consiste básicamente en grabar todos los pasos que el usuario ejecuta para resolver un problema y seguir ese mismo esquema para resolver problemas similares en el futuro. Por tanto, al utilizar la grabadora es conveniente planificar previamente los pasos que se van a seguir y no realizar acciones innecesarias mientras se realiza la grabación.

La grabadora se activa con el comando Grabar macro. Al pulsar el botón se abre un cuadro de diálogo en el que hay que introducir el nombre de la macro y la ubicación donde se desea guardar^1. Una vez creada una macro, el comando se transforma en Detener grabación.

(^1) Si la macro se guarda en un libro nuevo puede ser ejecutada desde cualquier libro creado durante la

sesión actual de Excel. Si se guarda en un libro de macros personal, la macro se podrá utilizar en cualquier momento sin importar el libro de Excel que se esté utilizando.

Ejemplo 1: Grabar una macro sencilla.

Una macro puede ser cualquier conjunto de comandos, desde cambiarle el color a una celda, hasta introducir una función y resolverla. En este ejemplo, se ha grabado un ejercicio de tipo Buscar Objetivo igual que uno de los que se hizo en el tema 2. Se ha cambiado el formato de la celda del título para combinar y centrar un conjunto de celdas, cambiar la fuente a negrita en blanco y el fondo a rojo, se ha escrito el título y los rótulos de las casillas, se ha recuadrado el conjunto de casillas y se ha utilizado el comando Buscar objetivo para resolver el problema. La macro se ha guardado con el nombre Y_Si en el libro personal de macros.

El resultado al ejecutarla con el comando Macros es el esperado:

Para ver el código exacto que contiene esta macro, en lugar de ejecutarla se puede abrir para modificar. Esto abre el Editor de Visual Basic:

Podemos ver en detalle cada uno de los pasos que incluye el programa:

texto

Range("C3").Select a la celda C ActiveCell.FormulaR1C1 = "=R[2]C^2+R[2]C+2" le da el valor de la siguiente función Range("A1:D5").Select sobre este rango de celdas Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlMedium End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlMedium End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlMedium End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlMedium End With Selection.Borders(xlInsideVertical).LineStyle = xlNone Selection.Borders(xlInsideHorizontal).LineStyle = xlNone Range("C3").GoalSeek Goal:=10, ChangingCell:=Range("C5") para la celda C3 establece, con el buscador de objetivos, un valor buscado de 10, a base de modificar la celda C5, que es donde se ha referido la x al introducir la función

End Sub fin de la macro

crea un recuadro negro grueso alrededor a base de crear las líneas correspondientes, verticales y horizontales, arriba, abajo, a la derecha y a la izquierda de la selección

1.2 SEGURIDAD DE MACROS

De manera predeterminada Excel no permite ejecutar macros automáticamente. Así se evita que al abrir un archivo que no ha creado el propio usuario se ejecute una macro con código malicioso. No obstante, esta configuración se puede modificar desde la Ficha Archivo  Opciones  Centro de confianza  Configuración del centro de confianza. Se abre un cuadro de diálogo en el que se puede elegir, para el submenú Configuración de macros, lo siguiente:

  • Deshabilitar todas las macros sin notificación: permite ejecutar únicamente las macros que están almacenadas en un lugar confiable, que, por defecto, son ciertos directorios dentro de la carpeta que contiene los archivos de programa de MS Office en el ordenador del usuario.
  • Deshabilitar todas las macros con notificación: muestra una alerta de seguridad advirtiendo de la intención de ejecutar una macro, de manera que el usuario decida si la ejecuta o no. Es la opción predeterminada.
  • Deshabilitar todas las macros excepto las firmadas digitalmente: permite ejecutar únicamente las macros con una firma digital y, por tanto, autor conocido.
  • Habilitar todas las macros: permite ejecutar todas las macros sin enviar ninguna notificación al usuario, tanto de fuentes conocidas como desconocidas.

Pero estos no son los únicos objetos. Por ejemplo, cada Workbook contiene o puede contener, además, Charts (gráficos), Windows (ventanas), CommandBars (barras de herramientas), VBProject (proyectos de Visual Basic), etc. Cada Range, contiene Font, Interior, Border, Column, Row, Text, Cell, Formula, Value, etc.

Range(“C3”).Select selecciona la celda C

ActiveSheet.Paste pega lo copiado en esta celda (no se puede usar selection otra vez porque ya tiene un valor, lo que contiene la celda A1)

Columns(“D:D”).Clear borra el contenido de todas las celdas de la columna D

Rows(“6:6”).Delete elimina la fila 6 y las filas inferiores se desplazan

Un procedimiento es un conjunto de instrucciones que conducen a un resultado específico, mientras que un módulo es un conjunto de procedimientos que conducen a la resolución de un problema. Un programa es un conjunto de módulos que el usuario ha combinado para realizar una actividad compleja. Dicho de otra manera, un procedimiento es, por ejemplo, el conjunto de instrucciones que hacen que una casilla resuelva una función y ponga el resultado en negrita; un módulo es el conjunto de procedimientos que han servido para importar los datos, copiarlos en las celdas, contar el número de datos, leerlos, realizar la operación y ofrecer el resultado; un programa hace todo eso y, además, representa los resultados en una gráfica, genera un informe y lo guarda en una ubicación específica, etc.

Los procedimientos pueden ser de dos clases: funciones y subrutinas. Las funciones (function) son expresiones matemáticas que aceptan como argumentos variables, constantes y expresiones cuyo valor debe estar contenido en una celda y cuyo resultado también va a escribirse en una celda. Las subrutinas (sub) son instrucciones de cualquier tipo, que pueden tener como argumento también una variable, una constante o una expresión, pero cuyos valores no tienen por qué estar declarados en celdas, al igual que el resultado final.

2.2 EL EDITOR DE VISUAL BASIC

El Editor de Visual Basic es un programa independiente de Excel que permite crear y modificar macros, cambiar las propiedades del libro de trabajo y sus hojas, crear procedimientos o módulos y formularios. El editor de abre desde la Ficha Programador con el comando Visual Basic o pulsando Alt+F11. El aspecto del editor es el siguiente:

En la parte superior izquierda se muestra el Explorador de proyectos, que muestra el libro de macros y el libro de Excel donde se está trabajando actualmente, con todas sus hojas. En la parte inferior está la ventana Inmediato, donde se pueden introducir instrucciones y observar su resultado inmediatamente. Ambas secciones se pueden hacer visibles, de no aparecer automáticamente, desde el menú Ver. El área principal es donde se escriben y editan las instrucciones que conforman la macro.

Para crear una nueva macro hay que comenzar insertando un módulo nuevo. Un módulo es un conjunto de sentencias que declaran variables y un conjunto de procedimientos a ejecutar para dichas variables. Una macro está formada por varios módulos. Los módulos se insertan desde el menú Insertar  módulo.

Los objetos tienen muchas propiedades y métodos y es difícil imaginar que se pueden memorizar todos por completo. Sin embargo, el Editor de VBA proporciona, mientras se escribe el código (justo después de poner el punto tras el nombre del objeto), la lista completa de propiedades y métodos para el objeto dado. Por ejemplo, al escribir el nombre de una celda, se abre un cuadro de menú con todas las propiedades (una mano señalando un archivo) y métodos (un icono verde) que pueden aplicarse a ese objeto. Por ejemplo, para una celda:

. Value = "Aprender VBA" va a contener este texto . Font.Bold = True el texto va a estar en negrita . Font.ColorIndex = 2 las letras van a ser de color blanco . Interior.ColorIndex = 1 y el interior de la celda de color negro

End With fin de las instrucciones para el objeto indicado

End Sub fin de la subrutina

2.3 TIPOS DE ERRORES EN VBA

Existen dos tipos de errores en VBA: errores de sintaxis y errores de tiempo de ejecución.

Errores de sintaxis:

Un error de sintaxis es el que se produce, bien porque se escribe mal una instrucción, bien porque se escribe una instrucción correcta en un lugar inadecuado. En el primer caso, el Editor avisa de un error al escribir Mud el lugar de Mod, que es el comando que corresponde al módulo:

En el segundo caso, el Editor devuelve un error indicando que después del comando ValorBase as debe definirse dicho valor o decir que es una variable nueva, no pudiendo utilizarse ningún otro comando:

Errores en tiempos de ejecución:

Estos errores son más complejos y ocurren cuando la macro intenta ejecutar una instrucción que no está permitida, de manera que Excel dejará de responder. Algunos de estos errores ocurren por:

  • Intentar realizar una operación prohibida en Excel, como dividir entre cero o sumar una cadena de texto.
  • Intentar utilizar una librería de código que no está accesible en ese momento.
  • Utilizar un bucle con una condición que nunca se cumple.
  • Tratar de asignar un valor que está fuera de los límites de la variable.

Para evitar errores, el Editor permite depurar el código. Una manera sencilla es utilizar la opción Depuración  Paso a paso por instrucciones o simplemente pulsar F8. Esto hace que se inicie la ejecución de la primera línea. Si la línea está correcta, el fondo aparece en amarillo y no se muestra ningún mensaje de error. Para pasar a la siguiente línea hay que pulsar de nuevo F8, y así sucesivamente. Por ejemplo, al escribir valor en lugar de Value:

Al pulsar depurar, el Editor nos devuelve a la línea que contiene el error para que lo corrijamos:

El comando Option Explicit escrito al comienzo de un módulo obliga al usuario a definir todas las variables, de manera que, si el programa encuentra una variable no definida se detiene. Esto permite identificar fácilmente errores en la declaración de variables o usar el mismo nombre para dos variables.

3.2 ENTRADA DE DATOS Y EMISIÓN DE RESULTADOS

Una de las funciones básicas de un programa es pedirle al usuario que defina el valor de las variables, es decir, que rellene los datos con los que se va a resolver el problema. Para ello, una opción es crear un cuadro de diálogo que pida al usuario cierta información y que contenga una casilla que el usuario pueda rellenar, además de botones que le permitan continuar el programa, como aceptar, cancelar, siguiente, sí, no, etc.

Para que el programa le pida información al usuario hay que utilizar el comando InputBox de la siguiente forma: InputBox(mensaje, título, valor por defecto, posición en x, posición en y). Donde:

  • Mensaje: mensaje que va a recibir el usuario.
  • Título: título del cuadro de diálogo que se va a abrir.
  • Valor por defecto: valor que se asigna por defecto si el usuario no introduce otra cosa.
  • Posición en x: posición horizontal del cuadro de diálogo en la pantalla, en píxeles.
  • Posición en: posición vertical del cuadro de diálogo en la pantalla, en píxeles.

No es necesario incluir todos los datos que se piden, basta, por ejemplo, con escribir el mensaje, pero hay que mantener el orden en el que se escriben.

Ejemplo 2: Crear un cuadro de diálogo para introducir datos.

a) Crear un cuadro llame Variable X que pida al usuario introducir un dato. En el caso de que no se introduzca nada, que tome el valor 120. Que el cuadro esté en la posición (4830, 2210) de la pantalla:

La subrutina es la siguiente:

Sub IntroducirDato()

Numero = InputBox("Introduce un número", "Variable X", 120, 4830, 2210) es necesario darle un nombre a la variable inputbox, en este caso Numero

End Sub

Y el resultado:

El programa no se sigue ejecutando hasta que el usuario pulsa Aceptar o Cancelar, que aparecen por defecto. El valor que se ha elegido por defecto, 120, aparece directamente en el recuadro a la espera de que el usuario escriba otro valor.

Para que le programa muestre el resultado de las operaciones que ha realizado con los datos introducidos hay que crear un nuevo cuadro de diálogo con el comando MsgBox de la forma: MsgBox(mensaje, botones, título). Donde:

  • Mensaje: es el mensaje que va a recibir el usuario junto con los resultados. Puede incluir caracteres especiales, del tipo +Chr(13) (retorno de carro) o +Chr(10) (avance de línea).
  • Botones: se pueden incluir diferentes botones: Botones Comando abreviado

Descripción

VbOKOnly 0 Muestra solamente el botón Aceptar. VbOKCancel 1 Muestra los botones Aceptar y Cancelar VbAbortRetryIgnore 2 Muestra los botones Anular, Reintentar e Ignorar VbYesNoCancel 3 Muestra los botones Sí, No y Cancelar. VbYesNo 4 Muestra los botones Sí y No. VbRetryCancel 5 Muestra los botones Reintentar y Cancelar. VbCritical 16 Muestra el icono de mensaje crítico. VbQuestion 32 Muestra el icono de pregunta de advertencia. VbExclamation 48 Muestra el icono de mensaje de advertencia. VbInformation 64 Muestra el icono de mensaje de información

  • Título: rótulo de la ventana que se va a generar.

Ejemplo 3: Crear cuadros de resultados con botones:

a) Crear un cuadro llamado Repetir que pregunte al usuario si desea introducir nuevos datos y ofrezca dos botones, Sí y No.

Sub SiNo()

Respuesta = MsgBox("¿Desea introducir nuevos datos?", vbYesNo, "Repetir")

End Sub