Está en la página 1de 14

Ediciones ENI

Macros y lenguaje VBA


Aprender a programar con Excel
(3ª edición)

Colección
Objetivo: Soluciones

Extracto del Libro


Parte 2: Las bases de la programación
Capítulo 5
Las variables
A. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
B. ¿Qué es una variable?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
C. El método MsgBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
D. Declaración de una variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
E. Caso práctico de utilización de una variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
F. El método InputBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
G. Las tablas en memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
54
Macros y lenguaje VBA - aprender a programar con Excel

Capí tul o y5:lenguaje


Macros Las v ariabl
VBAes - aprender a programar con Excel

A. Introducción
Como vimos en el capítulo Primer programa, la Grabadora de macros convierte cada una de
las selecciones de celda, de rango de celdas, en referencias fijas:

Range("A3:B5").Select
Range("C8").Select
Columns("D").Select

Este tipo de escritura del código tiende a desaparecer ya que las referencias serán invaria-
blemente las mismas. Es decir, el interés de hacer un programa es aplicar una instrucción
a un elemento (una celda, una hoja de cálculo, un libro, un gráfico, etc.) y después reprodu-
cir esta instrucción en otros elementos.
Este es el motivo por el que no deben escribirse las referencias de una celda directamente
en el código, sino que deberá usarse una variable que, como su propio nombre indica, per-
mitirá hacer variar las coordenadas de la celda.

B. ¿Qué es una variable?


Las variables pueden verse como cajas en las que se almacenan una serie de informa-
ciones: cifras, fechas, texto, etc.
Por supuesto que no se trata de una caja en el sentido literal, sino de un espacio reservado
en la memoria del ordenador. Como el ordenador administra este espacio en la memoria,
la cuestión no está ahí. Lo que debemos recordar es que creando una variable (una caja)
con un nombre propio, el VBA sabrá siempre en qué caja deberá leer o recuperar los datos.
De hecho, bastará con declarar un nombre de variable y atribuirle un tipo de datos para que
Visual Basic se ocupe del resto.
Realmente no hay reglas para el nombre que le da a sus variables; puede escoger cualquier
palabra con la condición de que no sea una de las palabras reservadas (palabras clave) de
VBA (como Sheets, Cells, Worksheets, Columns, Rows, etc.).
Una variable puede estar compuesta por una o varias palabras, pero estas no deben estar
separadas por un espacio o por un guion (-). El único carácter de separación autorizado es
el guion bajo (_).
Capítulo 5: Las variables 55

n Para lograr mayor eficacia en la gestión de las variables es preferible optar por
nombres comprensibles (Núm_Fila, Nombre_Libro, Nombre_Hoja, etc.), en lugar de
elegir nombres compuestos de una sola letra (i, j, k, etc.).

C. El método MsgBox
El método MsgBox es una función importante para comprender programas en Visual Basic
ya que permite mostrar en todo momento mensajes personalizados. Pero MsgBox no solo
muestra mensajes personalizados, sino que también bloquea la ejecución del resto del códi-
go.

1. Vista de un mensaje personalizado


h Escriba, por ejemplo, el programa siguiente:

Sub Test_Vista()
MsgBox "Mensaje personalizado"
End Sub

h Inicie la ejecución del programa pulsando la tecla 5 o haciendo clic en el icono .


El resultado de este programa muestra el siguiente cuadro de diálogo:
© Editions ENI - All rights reserved

Como podrá observar, la instrucción para mostrar un mensaje es muy sencilla, pero lo que
es importante comprender es que mientras no pulse el botón Aceptar, la ejecución del códi-
go permanece bloqueada en la línea MsgBox.
Ahora podrá mostrar más de un mensaje personalizado y también reagrupar texto persona-
lizado con el contenido de una variable al mismo tiempo.
56
Macros y lenguaje VBA - aprender a programar con Excel

2. Ver el resultado de una variable


Todos los textos introducidos entre comillas aparecerán tal cual en el cuadro de diálogo,
pero las variables no deben escribirse nunca entre comillas. De hacerlo, el cuadro de diálo-
go mostraría el nombre usado en el programa para calificar la variable y no su contenido.

MsgBox "Mi_Variable" 'Muestra solo Mi_Variable como mensaje.

Mientras que la siguiente instrucción mostrará el valor de la variable en el cuadro de diálo-


go.

MsgBox " Mi_Variable tiene como valor " & Mi_Variable

Según el contenido de la variable (texto, número, fecha, etc.), la instrucción precedente


mostrará a la vez el texto escrito entre comillas y el contenido de la variable. Por ejemplo,
podemos escribir los siguientes mensajes:
- Mi_Variable tiene como valor 35
- Mi_Variable tiene como valor París
- Mi_Variable tiene como valor 25/12/2017
En el apartado siguiente veremos los diferentes tipos de variables que se pueden utilizar.
Fíjese en el símbolo & entre el texto entrecomillado y el nombre de la variable. En el capítulo
Administrar las listas de caracteres veremos con más detalle técnicas propias para cadenas
de caracteres (hay muchísimas), pero de momento sepa que el símbolo & permite vincular
el texto personalizado con el contenido de una variable.

3. Personalizar el mensaje
Puede personalizar la configuración del cuadro de diálogo MsgBox, el título de la ventana,
el número de botones, los iconos, etc. De esta forma los usuarios tendrán la impresión de
que el mensaje es propio del programa y no un mensaje de Excel.
El método MsgBox, además del mensaje que se quiere comunicar, posee las siguientes
opciones:

MsgBox Mensaje, Botón, Título

La opción Botón permite cambiar el nombre de los botones que aparecen (Cancelar, Sí, No,
etc.) y también cambiar el icono que aparece a la izquierda del cuadro de diálogo. Para ello,
es necesario seleccionar una de las constantes que aparecen después de escribir una
coma tras el mensaje personalizado.
Capítulo 5: Las variables 57

El tercer parámetro permite escribir títulos personalizados.


Si escribimos la siguiente línea:

MsgBox "Constante vbCritical", vbCritical, "Alerta urgente !!!!!!"

Obtendremos este mensaje:

Si selecciona la constante vbYesNo, el cuadro de diálogo mostrará los botones Sí y No, pero
el texto de la línea será ligeramente distinto ya que hay que indicar que la respuesta del
usuario (Sí o No) se incluirá en una variable.

Sub Macro1()
Dim LaRespuesta As Long
LaRespuesta = MsgBox("¿Estás contento?", vbYesNo)
End Sub
© Editions ENI - All rights reserved
58
Macros y lenguaje VBA - aprender a programar con Excel

n Más adelante, en el capítulo Las condiciones, estudiaremos cómo tratar las respues-
tas y cómo conocer el valor de la respuesta en el capítulo Depuración.

D.Declaración de una variable

1. ¿Declaración obligatoria o no?


Visual Basic permite trabajar con variables sin declararlas. Sin embargo, un lenguaje infor-
mático cualquiera no puede trabajar al mismo tiempo con datos numéricos y datos tex-
tuales. En efecto, si trata de agregar cifras y texto, su programa se detendrá y se quedará
colgado, es decir, el programa se detendrá por completo sin terminar el tratamiento.
Declarar sus variables prevendrá un error de manipulación de los datos de un programa.

n En todos los ejemplos que se muestran a continuación, las variables se declaran


sistemáticamente.

Por otro lado, al declarar las variables, es muy fácil recordar sus nombres haciendo uso de
la combinación de teclas CO.

n Basta con introducir los primeros caracteres del nombre de una variable declarada y
usar el método abreviado CO para que el nombre de la variable se complete al
instante.

Podrá hacer obligatoria la introducción de variables modificando una opción de la configura-


ción de Visual Basic Editor.
h Abra el menú Herramientas - Opciones.
h En la pestaña Editor, marque la opción Requerir declaración de variables.
Ediciones ENI

Excel
Macros y programación con VBA

Colección
Avanza ejercicio a ejercicio

Extracto del Libro


AVANZA EJERCICIO A EJERCICIO
EXCEL 2016 - Macros y programación con VBA

ENUNCIADO 2

FUNCIONES PERSONALIZADAS
PROPRIEDADES/FUNCIONES/PALABRAS CLAVE UTILIZADAS . . . . . . . . . . . . . . 12
1. Funciones personalizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

AVANZA EJERCICIO A EJERCICI O


Excel 2016 - Macros y programación con VBA 11 
ENUNCIADO 2

FUNCIONES PERSONALIZADAS
FUN CI ONES PERSON A LI ZAD AS

PROPRIEDADES/FUNCIONES/PALABRAS CLAVE UTILIZADAS


Excel 20 16 - Mac ros y program ac i ón con V BA

EJERCICIO N°
FUNCIONES 1 2 3 4 5 6 7 8 9 10 11 12 13
PERSONALIZADAS
Application.Volatile  
Asc  
CDate  
Cells 
Chr  
ColorIndex 
Column 
CountIf  
Currency 
Date  
Double   
For Each 
For…Next   
If   
Int 
Integer       
Item 
Left 
Len   
Match 
Max 
Mid   
Range     
Right 

 12 AVANZA EJERCI CI O A EJERCI CIO

Excel 2016 - Macros y programación con VBA


ENUNCIADO 2

FUNCIONES PERSONALIZADAS

EJERCICIO N°
FUNCIONES 1 2 3 4 5 6 7 8 9 10 11 12 13
PERSONALIZADAS
Select case 
Single  
String     
Sum 
Variant 
WeekDay 
WorksheetFunction    

AVANZA EJERCICIO A EJERCICI O


Excel 2016 - Macros y programación con VBA 13 
ENUNCIADO 2

FUNCIONES PERSONALIZADAS
1. Funciones personalizadas

FuncionesPerso.xls

EJERCICIO N°1
Cree una función que permita calcular el importe de IVA cuando se introduzca el im-
porte con IVA y porcentaje de IVA expresado en %.

EJERCICIO N°2
Cree una función que permita calcular el coste de carburante de un coche en
función de la distancia, el precio del litro de carburante y el consumo medio del vehí-
culo L/100 Km.

EJERCICIO N°3
Cree una función que permita calcular un importe en función de la cantidad y del
baremo mostrado abajo.

 14 AVANZA EJERCI CI O A EJERCI CIO

Excel 2016 - Macros y programación con VBA


ENUNCIADO 2

FUNCIONES PERSONALIZADAS
EJERCICIO N°4
Cree dos funciones que permitan calcular el total y el número de valores formateados
con fondo amarillo.

EJERCICIO N°5
Cree una función que permita calcular el número de celdas que contienen un texto
concreto.

AVANZA EJERCICIO A EJERCICI O


Excel 2016 - Macros y programación con VBA 15 
ENUNCIADO 2

FUNCIONES PERSONALIZADAS
EJERCICIO N°6
Cree una función que permita calcular el número de valores comprendidos entre dos
márgenes.

EJERCICIO N°7
Cree una función que permita calcular el rendimiento por minutos en la fabricación de
piezas.

 16 AVANZA EJERCI CI O A EJERCI CIO

Excel 2016 - Macros y programación con VBA

También podría gustarte