Documente Academic
Documente Profesional
Documente Cultură
Las siglas de VBA, vienen del inglés y significan (Visual Basic for Applications), también
conocido en español como Visual Basic para Aplicaciones. Este editor es independiente de
Excel y nos permite crear macros personalizadas a través de código de programación
para automatizar nuestro trabajo diario.
Contenido [Ocultar]
https://www.clasesdeinformaticaweb.com/programacion/vba-excel-guia-practica/ 1/23
22/9/2019 VBA Excel. Guía práctica. Aprende a crear macros en Excel desde cero
Cuando las instrucciones se le dan a través de la grabadora de macros, lo que hace Excel
es grabar todo lo que hacemos en todas y cada una de las hojas de cálculo de nuestro
libro.
De esta forma, Excel genera internamente una serie de código de programación, es decir,
una serie de instrucciones que luego se ejecutarán de forma automática.
Por otro lado cuando somos nosotros los que generamos ese código a través del editor
de VBA, lo que estamos haciendo es programar en Excel con lenguaje Visual Basic y esto
es lo que se llama en informática, crear una macro.
En este manual vamos a centrarnos en la segunda forma, es decir, vamos a crear las
macros nosotros mismos a través del editor VBA. Además vamos a utilizar la versión 2016
de Microsoft Excel.
https://www.clasesdeinformaticaweb.com/programacion/vba-excel-guia-practica/ 2/23
22/9/2019 VBA Excel. Guía práctica. Aprende a crear macros en Excel desde cero
Antes de ponernos a crear macros, debemos configurar Excel 2016 y mostrar el menú
correspondiente llamado desarrollador. Para ello haremos lo siguiente:
Pulsaremos con el botón derecho del ratón en una zona libre de la cinta de opciones
y después en personalizar cinta de opciones.
https://www.clasesdeinformaticaweb.com/programacion/vba-excel-guia-practica/ 3/23
22/9/2019 VBA Excel. Guía práctica. Aprende a crear macros en Excel desde cero
Esto viene así por defecto porque no hay que olvidar que tanto los virus, malware, incluso
troyanos, son habituales en el desarrollo de software. No solo en Visual Basic para
Aplicaciones, sino también en otros lenguajes de programación, entre otros muchos, por
ejemplo, en java, php o incluso JavaScript.
https://www.clasesdeinformaticaweb.com/programacion/vba-excel-guia-practica/ 4/23
22/9/2019 VBA Excel. Guía práctica. Aprende a crear macros en Excel desde cero
Es importante recordar que nadie está libre de ser infectado por un virus y, mucho más en
los tiempos que corren, ya que con el avance de la tecnología, podemos encontrarnos
virus y troyanos que pueden infectar tablets, teléfonos móviles o incluso Smartwatch.
En nuestro caso, como las macros las vamos a crear nosotros, vamos a cambiar esta
configuración de seguridad. Para ello, haremos lo siguiente:
https://www.clasesdeinformaticaweb.com/programacion/vba-excel-guia-practica/ 5/23
22/9/2019 VBA Excel. Guía práctica. Aprende a crear macros en Excel desde cero
Con esto nos evitaremos que aparezcan notificaciones al ejecutar nuestras macros y
además evitaremos que se deshabilite el contenido de las mismas.
https://www.clasesdeinformaticaweb.com/programacion/vba-excel-guia-practica/ 6/23
22/9/2019 VBA Excel. Guía práctica. Aprende a crear macros en Excel desde cero
https://www.clasesdeinformaticaweb.com/programacion/vba-excel-guia-practica/ 7/23
22/9/2019 VBA Excel. Guía práctica. Aprende a crear macros en Excel desde cero
Unos comportamientos, es decir, que es lo que puede hacer el objeto. En este caso
es lo que llamaríamos en programación métodos del objeto.
https://www.clasesdeinformaticaweb.com/programacion/vba-excel-guia-practica/ 8/23
22/9/2019 VBA Excel. Guía práctica. Aprende a crear macros en Excel desde cero
En este caso la dirección de la celda de ejemplo con el fondo amarillo, la cual tiene el
valor 392, era la celda F2.
Como podemos ver, las hojas contienen celdas, graficos, tablas dinámicas, etc, es decir,
estos objetos están dentro de una hoja de Excel. A su vez las hojas pertenecen a los libros,
y los libros a la aplicación de excel.
https://www.clasesdeinformaticaweb.com/programacion/vba-excel-guia-practica/ 9/23
22/9/2019 VBA Excel. Guía práctica. Aprende a crear macros en Excel desde cero
Los módulos no son más que contenedores de código donde organizamos nuestras
macros. Para crear módulos lo haremos de la siguiente manera.
Dentro del editor de VBA, nos vamos a encontrar con todos los libros abiertos que
tengamos en ese momento. Como hemos visto anteriormente en la imagen anterior, en
nuestro editor tenemos dos libros. uno llamado interlinkin.xlsx y otro llamado
Macros.xlsm.
Siempre que vayamos a crear módulos para almacenar códigos para nuestras macros,
crearemos el módulo dentro del libro con extensión .xlsm. Así, haciendo clic derecho
sobre VBAProyect(Macros.xlsm), crearemos un módulo pinchando en insertar y luego
en Módulo.
Una vez creado nuestro módulo, podemos crear nuestra primera macro. Para ello
debemos crear nuestro un procedimiento. Para ello dentro del módulo escribimos lo
siguiente.
1 Sub escribirEnUnaCelda()
2
3 ' PRIMERA FORMA DE PONER UN VALOR A UNA CELDA
4
5 ' Hacemos referencia al objeto application
6 ' y luego al libro, despues al objeto hoja 1
7 ' y posteriormente al objeto celda con la
8 ' palabra reservada Range. Con value le
9 ' ponemos un valor a la celda
10 0
11 Application.Workbooks("Macros") _
https://www.clasesdeinformaticaweb.com/programacion/vba-excel-guia-practica/ 10/23
22/9/2019 pp VBA Excel.( ) _a crear macros en Excel desde cero
Guía práctica. Aprende
12 .Worksheets("Hoja1") _
13 .Range("A1").Value = "texto uno"
14
15 ' SEGUNDA FORMA DE PONER UN VALOR A UNA CELDA
16 Range("A2").Value = "texto 2"
17
18 End Sub
Con la primera forma de escribir la macro, estamos haciendo referencia a cada objeto.
Primero a la aplicación de excel, despues al libro llamado Macros, luego a la hoja 1 de ese
libro y por último a la celda A1. Al final escribimos un valor en esa celda.
Con la segunda forma, estamos haciendo referencia a la celda A2, pero en este caso, sería
la celda A2 de la hoja que esté activa en ese momento.
Por otro lado, omitimos el objeto application, ya que se da por supuesta y por tanto no
es necesario escribirla.
Ademas, también omitimos el objeto Workbooks, ya que estamos creando las macros en
ese libro y por otro lado al omitir el objeto WorkSheets, VBA entiende que debe escribir el
texto 2 en la hoja que esté activa en ese momento.
https://www.clasesdeinformaticaweb.com/programacion/vba-excel-guia-practica/ 11/23
22/9/2019 VBA Excel. Guía práctica. Aprende a crear macros en Excel desde cero
5 ' de 0 a 255
6 Dim edad As Byte
7 edad = 28
8
9 ' de -32768 a 32767
10 Dim numero As Integer
11 numero = 92
12
13 ' números muy grandes
14 Dim numeroGrande As Long
15 numeroGrande = 1500000
16
17 ' NÚMEROS DECIMALES
18
19 ' Parte decimal corta. Ej. 3,1415
20 Dim decimalCorto As Single
21 decimalCorto = 4.15
22
23 ' Parte decimal larga. Ej 14,54875115
24 Dim decimalLargo As Double
25 decimalLargo = 58.48515585
26
27 ' TIPO MONEDA
28 Dim euros As Currency
29 euros = 150.25
30
31 ' TIPO OBJETO
32 Dim miObjeto As Object
33 miObjeto = Worksheets("Hoja2")
34
35 ' TIPO STRING (cadenas de caracteres)
36 Dim texto As String
37 texto = "Hola mundo"
38
39 ' TIPO VERDADERO (TRUE) O FALSO (FALSE)
40 Dim condicion As Boolean
41 condicion = True
42
43 ' TIPO DE DATO SIN ESPECIFICAR
44 ' NO RECOMENDADO.
45 Dim variable As Variant
46 variable = Range("A1")
47
48 End Sub
Por un lado cuando programamos con Excel, primero debemos declarar la variable y
después se le dará un valor en la linea siguiente.
https://www.clasesdeinformaticaweb.com/programacion/vba-excel-guia-practica/ 12/23
22/9/2019 VBA Excel. Guía práctica. Aprende a crear macros en Excel desde cero
debemos activar para que en caso de que iniciemos una variable, si ésta no es declarada
anteriormente, nos de un error.
Para activa el Option Explicit pulsamos dentro del editor de VBA en Herramientas y
después en opciones y marcaremos la opción requerir declaración de variables.
Debemos tener en cuenta que si activamos esta opción cuando ya tenemos abierto un
módulo en el que estamos porgramando, el módulo no funcionaría, debemos copiar el
código de ese modulo, cerrarlo, eliminarlo y después crear uno nuevo. El módulo
quedaría de la siguiente manera:
1 Option Explicit
2
3 Sub declaracionDeVariables()
4
5 End Sub
https://www.clasesdeinformaticaweb.com/programacion/vba-excel-guia-practica/ 13/23
22/9/2019 VBA Excel. Guía práctica. Aprende a crear macros en Excel desde cero
1 Option Explicit
2
3 Sub saludar()
4
5 ' Variable declarada como local
6 ' a nivel de procedimiento
7 Dim nombre As String
8
9 nombre = "Pablo"
10
11 MsgBox "Hola " + nombre, vbInformation, "Saludo"
12
13 End Sub
14
15 Sub despedida()
16
17 ' La variable nombre declarada en el procedimiento
18 ' saludar() no es accesible o visible desde este,
19 ' es decir, no se puede usar.
20
21 End Sub
1 Option Explicit
2
3 ' Variable declarada como local a nivel de módulo
4 Dim nombre As String
5
6 Sub saludar()
7 ' Iniciamos la variable
8 nombre = "Pablo"
9
10 ' Mostramos un cuadro de mensaje con el valor
11 ' de la variable nombre declarada como local
12 ' a nivel de módulo
13 MsgBox "Hola " + nombre, vbInformation, "Saludo"
14
15 End Sub
0
16
https://www.clasesdeinformaticaweb.com/programacion/vba-excel-guia-practica/ 14/23
22/9/2019 VBA Excel. Guía práctica. Aprende a crear macros en Excel desde cero
17 Sub despedida()
18
19 ' La variable nombre declarada como local a nivel
20 ' de módulo, ahora si es accesible o visible desde este,
21 ' es decir, podemos utilizar esa variable
22
23 nombre = "María"
24
25 ' Mostramos un mensaje para despedirnos
26 MsgBox "Hasta luego " + nombre, vbInformation, "Despedida"
27 End Sub
Publica. Es una variable que es accesible o visible desde cualquier parte de nuestro
proyecto. En este caso en lugar de declarar la variable con la palabra reservada Dim, la
declararemos con el modificador de acceso Public.
1 Option Explicit
2
3 ' Variable declarada como pública y accesible
4 ' desde cualquier parte de nuestro proyecto
5 Public nombre As String
6
7 Sub saludar()
8 ' Iniciamos la variable
9 nombre = "Pablo"
10
11 ' Mostramos un cuadro de mensaje con el valor
12 ' de la variable nombre declarada como local
13 ' a nivel de módulo
14 MsgBox "Hola " + nombre, vbInformation, "Saludo"
15
16 End Sub
17
18 Sub despedida()
19
20 ' La variable nombre declarada como local a nivel
21 ' de módulo, ahora si es accesible o visible desde este,
22 ' es decir, podemos utilizar esa variable
23
24 nombre = "María"
25
26 ' Mostramos un mensaje para despedirnos
27 MsgBox "Hasta luego " + nombre, vbInformation, "Despedida"
28 End Sub
https://www.clasesdeinformaticaweb.com/programacion/vba-excel-guia-practica/ 15/23
22/9/2019 VBA Excel. Guía práctica. Aprende a crear macros en Excel desde cero
Por otro lado, las constantes suelen declararse o bien locales a nivel de módulo o
públicas, ya que cuando se declaran, suelen utilizarse o bien para módulos enteros o en
todo nuestro proyecto.
Además una constante en VBA es imprescindible iniciarla, es decir, darle un valor para que
en el programa no salte ningún error.
En este caso el guión bajo, como hemos usado ya en otras ocasiones, nos permita hacer
un salgo de línea, aunque VBA considera todo se esta escribiendo en la misma línea.
https://www.clasesdeinformaticaweb.com/programacion/vba-excel-guia-practica/ 16/23
22/9/2019 VBA Excel. Guía práctica. Aprende a crear macros en Excel desde cero
En este caso, vemos la palabra reservada vbNewLine, esto nos permite crear un salto de
linea dentro de un cuadro Msgbox.
Por otro lado usamos el signo más que nos permite concatenar o unir nuestras cadenas
de texto con el valor de variables u otros objetos.
1 Option Explicit
2
3 Sub declararMatrices()
4
5 ' Declaramos una matriz de dos dimensiones
6 ' que contiene 4 filas y 3 columnas
7 Dim listaNumeros(4, 3) As Integer
8
9 ' Declaramos dos variables para recorrer
10 ' la fila y la columna de nuestra matriz
11 Dim fila, columna As Byte
12
13 ' Declaramos una variable donde almacenar
14 ' un número aleatorio entre cero y cien
15 Dim valor As Byte
16
17 ' Usamos un bucle for para rellenar
18 ' cada fila y cada columna
19 0
For fila = 0 To 4
20
https://www.clasesdeinformaticaweb.com/programacion/vba-excel-guia-practica/ 17/23
22/9/2019 VBA Excel. Guía práctica. Aprende a crear macros en Excel desde cero
21 For columna = 0 To 3
22
23 ' Creamos un número aleatorio
24 valor = Math.Round(Math.Rnd * 100)
25
26 ' lo almacenamos en el array
27 listaNumeros(fila, columna) = valor
28
29 ' Opcionalmente podemos verlo en la hoja
30 ' activa, asi que lo escribimos
31 ' en la hoja activa
32 Cells((fila + 1), (columna + 1)) = valor
33 Next columna
34
35 Next fila
36
37 End Sub
1 Option Explicit
2
3 Sub variablesObjeto()
4
5 ' variable que almacena un objeto tipo celda
6 Dim miCelda As Range
7
8 ' variable que almacena un objeto tipo hoja
9 Dim miHoja As Worksheet
10
11 ' variable que almacena un objeto tipo libro
12 Dim miLibro As Workbook
13
14 End Sub
Esto nos trae una ventaja considerable a la hora de programar, y es que, cuando el
programa 0tiene que averiguar una ruta hacia un objeto, en programas complejos, el
https://www.clasesdeinformaticaweb.com/programacion/vba-excel-guia-practica/ 18/23
22/9/2019 VBA Excel. Guía práctica. Aprende a crear macros en Excel desde cero
código se ejecuta más lentamente. Vamos a ver un ejemplo de tres formas diferentes.
1 Option Explicit
2
3 Sub variablesObjeto()
4
5 ' escribimos un valor en la celda A1
6 ' de la hoja 1
7 Sheets("hoja1").Range("A1").Value = 300
8
9 'ponemos el valor en negrita
10 Sheets("hoja1").Range("A1").Font.Bold = True
11
12 ' le ponemos un fondo
13 Sheets("hoja1").Range("A1").Interior.Color = vbRed
14
15 End Sub
En este mismo ejemplo, podemos simplificar nuestro código si declaramos una variable
objeto de tipo celda y diciéndole al programa que esa variable almacene una celda de
una hoja en concreto. Eso lo hacemos de la siguiente manera.
1 Sub variablesObjeto()
2
3 ' Declaramos una variable de tipo celda
4 Dim miCelda As Range
5
6 ' Almacenamos en la variable miCelda
7 ' un nuevo objeto celda, que será la celda
8 ' A1 de la hoja 1
9 Set miCelda = Sheets("Hoja1").Range("A1")
10
11 ' escribimos un valor en la celda A1
12 ' de la hoja 1
13 miCelda.Value = 300
14
15 'ponemos el valor en negrita
16 miCelda.Font.Bold = True
17
18 ' le ponemos un fondo
19 miCelda.Interior.Color = vbRed
20
21 End Sub
https://www.clasesdeinformaticaweb.com/programacion/vba-excel-guia-practica/ 19/23
22/9/2019 VBA Excel. Guía práctica. Aprende a crear macros en Excel desde cero
Para almacenar un objeto en una variable utilizamos la palabra resetvada Set. En este caso
estamos creando un nuevo objeto de tipo celda y almacenándolo en una variable. En este
caso NO utilizamos la palabra new como ocurre por ejemplo en java.
Teniendo en cuenta esto, podemos incluso utilizar una estructura propia de excel. Esta
estructura es lo que llamamos With – End With, de forma que simplificaría el código un
poco más.
1 Option Explicit
2
3 Sub variablesObjeto()
4
5 ' Declaramos una variable de tipo celda
6 Dim miCelda As Range
7
8 ' Almacenamos en la variable miCelda
9 ' un nuevo objeto celda, que será la celda
10 ' A1 de la hoja 1
11 Set miCelda = Sheets("Hoja1").Range("A1")
12
13 With miCelda
14
15 ' escribimos un valor en la celda A1
16 ' de la hoja 1
17 .Value = 300
18
19 'ponemos el valor en negrita
20 .Font.Bold = True
21
22 ' le ponemos un fondo
23 .Interior.Color = vbRed
24
25 End With
26
27 End Sub
Entradas relacionadas
https://www.clasesdeinformaticaweb.com/programacion/vba-excel-guia-practica/ 20/23
22/9/2019 VBA Excel. Guía práctica. Aprende a crear macros en Excel desde cero
0
Java Guía práctica
https://www.clasesdeinformaticaweb.com/programacion/vba-excel-guia-practica/
CSharp Guia práctica de C# 21/23
22/9/2019 VBA Excel. Guía práctica. Aprende a crear macros en Excel desde cero
Java. Guía práctica. CSharp. Guia práctica de C#.
Deja un comentario
Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *
NOMBRE *
WEB
Publicar comentario
SOBRE NOSOTROS.
0
https://www.clasesdeinformaticaweb.com/programacion/vba-excel-guia-practica/ 22/23
22/9/2019 VBA Excel. Guía práctica. Aprende a crear macros en Excel desde cero
Política de cookies
Política de privacidad.
Términos y condiciones
Contacto
https://www.clasesdeinformaticaweb.com/programacion/vba-excel-guia-practica/ 23/23