Está en la página 1de 46

APLICACIONES DE EXCEL

CON MACROS Y VBA

DOCENTE: LUIS FELIPE GARAYAR BURNEO


CORREO: LUIS.GARAYAR.DMC@GMAIL.COM
MÓDULOS
• Un módulo es un entorno de trabajo compuesto por sentencias de declaración de
variables y por uno o más procedimientos.
• Estando en el Editor del Visual Basic, para disponer de un Módulo, se debe usar la
siguiente secuencia de comandos:
• Luego de esta acción, se
podrá observar, en la ventana
de proyectos y dentro del libro
en uso, una carpeta con el
nombre Módulo.
• Dentro de ella se insertarán
todos los procedimientos que
conforman dicho módulo.
PROCEDIMIENTO
• Es un conjunto de sentencias que permite resolver un problema. Un módulo está formado
por uno o más procedimientos. Un procedimiento se declara a través de la sentencia Sub

Procedimiento Privado: sólo es accesible por otros


procedimientos dentro del mismo módulo

Procedimiento Público: es accesible por todos los


procedimientos de todos los módulos VBA de un
proyecto (por defecto, si no se especifica, los
procedimientos son Public)

Procedimiento Estático: Para que las variables de un


procedimiento se conserven una vez terminada su
ejecución, éste debe definirse como Estático
LLAMAR A OTRO PROCEDIMIENTO
• Para llamar a un procedimiento desde otro procedimiento, se puede utilizar la sentencia
Call o simplemente el nombre del procedimiento. Por ejemplo:

• En este caso, el procedimiento Proced1 llama al


procedimiento Proced2.

• La sentencia Call se utiliza cuando se requiere


llamar a un procedimiento al cual hay que
pasarle un argumento.
• Es recomendable utilizar siempre la sentencia Call
para llamar a otro procedimiento aunque no se
pasen argumentos.
TIPOS DE ERRORES EN VBA (I)
• Existen dos tipos de errores en VBA: errores de sintaxis y errores de tiempo de ejecución.
• Un error de sintaxis es el que se produce, bien porque se escribe mal una instrucción, o
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:

 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:
TIPOS DE ERRORES EN VBA (II)
• Los errores de ejecución 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 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 (bucles infinitos).
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.
CONTENIDO GENERAL

I. Introducción
II. Editor de Visual Basic (VBA)
III. Variables, Tipos de Datos y Constantes
IV. Objetos, Propiedades y Funciones
V. Estructuras condicionales con VBA
VI. Estructuras iterativas con VBA
VII. Diseño y Programación de Formularios
VARIABLES
• Las variables almacenan valores (datos, constantes, nombres, resultados, etc.). Existen
muchos tipos de variables, pero los más habituales son los siguientes:
CLASES DE VARIABLES
• Variables locales: son aquéllas que se declaran dentro de un módulo y no pueden utilizarse fuera
de él. Para declararlas al principio del módulo correspondiente se utiliza:
Dim NombreDeLaVariable As TipoDeVariable
Dim Nombre1, Nombre2,… As TipoDeVariable
• Variables públicas: están disponibles en todos los módulos de un proyecto. Se definen antes del
primer procedimiento con el comando:
Public NombreDeLaVariable As TipoDeVariable
• Variables estáticas: conservan su valor en todos los procedimientos y se declaran como:
Static NombreDeLaVariable As TipoDeVariable
• Constantes: son valores cuyo valor no cambia al ejecutar un procedimiento. Se declaran como:
Const NombreDeLaVariable As TipoDeVariable
Las constantes también pueden ser públicas de la forma Public Const…
Una vez que una variable se ha declarado, se le puede asignar un valor de la forma:
NombreDeLaVariable = Valor.
OPTION EXPLICIT
• Se usa en el nivel de módulo para forzar declaraciones explícitas de todas las variables
en dicho módulo, debe aparecer en un módulo antes de cualquier procedimiento.
• Se utiliza para evitar escribir incorrectamente el nombre de una variable existente o
para evitar confusiones en el código, donde el alcance de la variable no está claro.
• Si intentamos usar un nombre de variable no declarado, ocurrirá un error en tiempo de
compilación o en tiempo de ejecución.
• Cuando no usamos la instrucción Option Explicit todas las variables no declaradas son
Variant.
VARIABLES LOCALES
• Una variable es local cuando está declarada
dentro de la macro donde se usará. También se
pueden declarar varias variables en la misma línea
de código.

• Si una variable es local todas el resto de las


macros podrán utilizar el mismo nombre de la
variable.
• Se recomienda utilizar variables locales antes que
variables públicas, ya que una vez que la macro
termina de ejecutarse, VBA ya no las reconoce de
nuevo y libera memoria.
• Si son públicas el valor al que hacen referencia
sigue vigente y ocupando espacio en memoria.
VARIABLES PÚBLICAS
• En este ejemplo se utiliza la instrucción Public a nivel de módulo (sección General) para declarar
variables como públicas
• A veces conviene utilizar variables públicas pues son variables que van a ser utilizadas varias veces
y es absurdo ir definiéndolas en cada macro.
• Esto no significa que su valor deba ser constante, tan solo que no es necesario definirla en cada
macro y que mientras no le asignemos otro valor conserva el que tenía.

Nota:

 Una variable numérica se inicializa a 0.


 Una cadena de longitud variable se inicializa a
una cadena de longitud cero ("")
 Una cadena de longitud fija se rellena con ceros.
 Las variables Variant se inicializan a Empty.
ENTRADA DE DATOS (I)
• Una de las funciones básicas de un programa es pedirle al usuario que defina el valor de las
variables, además de botones que le permitan continuar el programa, como aceptar, cancelar,
siguiente, sí, no, etc. Se usa el siguiente comando:

InputBox(mensaje, título, valor por defecto, posición en x, posición en y)

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 y: 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.
ENTRADA DE DATOS (II)
SALIDA DE RESULTADOS (I)

• El comando MsgBox muestra el resultado de las operaciones que ha realizado con los datos
introducidos en un nuevo cuadro de diálogo

MsgBox(mensaje, botones, título)


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)
Título: rótulo de la ventana que se va a generar.
Botones: se pueden incluir diferentes botones:
SALIDA DE RESULTADOS (II)
SALIDA DE RESULTADOS (III)
SALIDA DE RESULTADOS (IV)
1. Crear un cuadro llamado Repetir que pregunte al usuario si desea introducir
nuevos datos y ofrezca dos botones, Sí y No.

2. Crear un cuadro llamado Imposible Calcular que avise al usuario de que ha


introducido un valor erróneo junto con un icono de mensaje crítico y los
botones reintentar y cancelar:
SALIDA DE RESULTADOS (V)
3. Crear un cuadro llamado Advertencia que indique al usuario que faltan datos por introducir y que muestre
un icono de advertencia:

4. Diseñar un programa que calcule el precio total de una compra a partir del número de unidades compradas,
el precio unitario y el impuesto, creando los correspondientes cuadros para introducir las variables y el
cuadro con la respuesta final.
SALIDA DE RESULTADOS (VI)
SALIDA DE RESULTADOS (VII)
SALIDA DE RESULTADOS (VIII)
CONVERSIÓN DE TIPOS DE DATOS (I)
• Es posible convertir variables de un tipo a otro. Existen distintas funciones que permiten
hacer estas conversiones. El nombre de la función determina el tipo devuelto:
CONVERSIÓN DE TIPOS DE DATOS (II)
• Es posible convertir variables de un tipo a otro. Existen distintas funciones que permiten
hacer estas conversiones. El nombre de la función determina el tipo devuelto:
CONVERSIÓN DE TIPOS DE DATOS (III)
• Las variables String siempre deben ir entre comilla, salvo
cuando hacen referencia a algún valor que venga de la
misma hoja de Excel

• En este otro ejemplo definimos tres variables como String


y concatenamos sus valores para mostrarlos en la celda
A1, en la ventana inmediata y en un mensaje.
• La fechas se pueden guardar como String pero no pueden
ser utilizadas en operaciones como fechas salvo que las
transformemos a Date
CONVERSIÓN DE TIPOS DE DATOS (IV)
CONTENIDO GENERAL

I. Introducción
II. Editor de Visual Basic (VBA)
III. Variables, Tipos de Datos y Constantes
IV. Objetos, Propiedades y Funciones
V. Estructuras condicionales con VBA
VI. Estructuras iterativas con VBA
VII. Diseño y Programación de Formularios
PRINCIPALES OBJETOS EN VBA
OBJETO RANGE (I)
• El objeto Range representa una celda, o un rango de celdas.

Range(cadena).Propiedad
• El argumento cadena representa a una celda o un rango de celdas.
OBJETO RANGE (II)
OBJETO RANGE (III)
La función RGB
• Devuelve un número entero tipo Long (hasta el valor 2,147,483,647) este valor
representa un valor de color.
OBJETO RANGE (IV)
OBJETO RANGE (V)
• Con el objeto Range aplique los siguientes formatos a la celda A1:
Negrita, Cursiva, Subrayado, Tamaño, Fuente Broadway,
Color de fuente roja y color de Relleno verde vivo
OBJETO RANGE (VI)
• Con el objeto Range se puede asignar el valor de una celda en otra, incluso en otra celda
de otra hoja.

• Otra forma de referenciar una celda es usando el objeto CELLS.


OBJETO RANGE (VII)
FormulaR1C1
Range("D4").Formula = "=B3*10"

Range("D4").FormulaR1C1 = "=R3C2*10"

Range("D4").FormulaR1C1 = "=R[-1]C[-2]*10"
OBJETO WORKSHEETS (I)
• La clase o conjunto WorkSheets contiene todos los objetos WorkSheet abiertos en un
momento determinado en Microsoft Excel.
• Cada objeto WorkSheet representa una hoja de cálculo.
OBJETO WORKSHEETS (II)
• También puede utilizar los objetos Sheets y Activesheet.
OBJETO WORKBOOKS (I)
• La clase o conjunto WorkBooks contiene todos los objetos WorkBook abiertos en un momento
determinado en Microsoft Excel.
• Cada objeto WorkBook representa un libro en Excel.
OBJETO WORKBOOKS (II)
ActiveWorkBook:
• Este objeto hace referencia al libro activo, de tal forma que cualquier acción que se pueda
ejecutar afectará al libro activo dentro del grupo de libros que pudieran estar abiertos.
INTRODUCCIÓN A LAS FUNCIONES EN VBA (I)
• Copie el siguiente procedimiento y ejecútelo

• Una vez haya ejecutado la macro, observe que en la celda donde se ha colocado la función
=SUMA, aparece #¿NOMBRE?, esto significa que Excel no reconoce el nombre de la función, que
no existe.
INTRODUCCIÓN A LAS FUNCIONES EN VBA (II)
Uso de Funciones del Excel en VBA
• Sin embargo, esta función si existe y funciona perfectamente cuando se digita directamente sobre
la hoja de cálculo, se preguntará el porqué cuando se colocan desde una macro no funcionan.
• Pues resulta que para que cualquier función de Excel insertada desde una macro NO muestre
error, debe ponerse con su nombre en Inglés, la traducción se hace luego de forma automática. Es
decir en la macro debe ponerla en inglés y luego cuando esta se inserte en la hoja aparecerá con
su nomenclatura en el idioma que corresponda
• Modifique el procedimiento del ejemplo y digite:

• Para averiguar el nombre de cualquier función en inglés, utilice la grabadora de macros.


INTRODUCCIÓN A LAS FUNCIONES EN VBA (III)
Uso de Funciones del Excel en VBA
• Siga los siguientes pasos:
1. Active la grabadora de macros.
2. Vaya a una casilla cualquiera, C1 por ejemplo y teclee la función tal como lo
haría en su idioma. Por ejemplo, ponga =PROMEDIO(A1:A10) o el nombre de
cualquier otra función Excel
3. Detenga la ejecución de la macro.
4. Edite la macro y observe el nombre que se ha puesto, ya sólo debe apuntárselo
y pasarlo a su procedimiento.
FUNCIONES EN VBA (I)
• Las funciones son procedimientos (Sub rutinas) que necesariamente devuelven un valor, esto es de
forma obligatoria.
• Así como los procedimientos (Sub), las funciones pueden o no recibir argumentos.
• Hay 2 formas de ejecutar una función:
─ Dentro de un procedimiento (Sub).
─ En una celda de una hoja de calculo
FUNCIONES EN VBA (II)
• Una vez definidas, las funciones han quedado integradas dentro de las funciones
predeterminadas:
FUNCIONES EN VBA (III)
APLICACIONES DE EXCEL
CON MACROS Y VBA

DOCENTE: LUIS FELIPE GARAYAR BURNEO


CORREO: LUIS.GARAYAR.DMC@GMAIL.COM

También podría gustarte