Вы находитесь на странице: 1из 8

Visual basic for Applications (VBA)

 Grabar una macro:


o Ir a la pestaña View> Macros > Record macros

o Aparecerá el siguiente cartel, en el cual se podrá elegir un nombre para la macro (por defecto, “Macro”
y un numero de macro, ejemplo “Macro1”), un shortcut, que dará la posibilidad de ejecutar la macro
apretando “CTRL” y otra tecla designada por el usuario; donde se va a guardar la macro, en “this
workbook”, o en algún otro abierto; y un comentario si quisiéramos ponérselo para recordar que hace la
macro.

 Podrán saber si la macro está grabando cuando este icono aparece abajo a la izquierda de la
pantalla

o Todas las acciones que realicen serán traducidas a código en la macro. Si no se realiza ninguna acción,
ningún código será grabado. Para ver el código que ha sido gravado, pueden apretar alt f11, o bien ir a
“View>Macros>View Macros” y en el cuadro que aparece, seleccionar “Edit”
o Tips:
 Cuando se graba una macro, hay que tener en cuenta que el Excel va a repetir exactamente las
mismas acciones que se están grabando, no va realizar ninguna prueba lógica, ni va tomar
ninguna consideración si las columnas, filas o celdas están de la forma en la que se supone que
deben estar. Va a realizar la acción, y sobrescribir información en el caso que haya en las celdas
en las que va realizar la acción. En el caso que no pudiese realizar la acción, va a tirar un error
como el de abajo, y en ese caso, deberán o modificar el código, o grabar una nueva macro.
 Programar una macro:
o Para comenzar a grabar una macro, empezaremos por abrir el ambiente de VBA, como se mostró en
“como grabar una macro”, o apretando “alt f11”
o El primer paso para comenzar a grabar una macro es crear un nuevo módulo en el proyecto, en el caso
que no exista ya uno.
 Para eso, vamos a ir a “insert>module” o también, hacer botón derecho sobre “vbaproject” y
seleccionar “insert>module”. Esto abrirá una pantalla en blanco, que es donde se va a ingresar
el módulo.

o Conceptos generales:
 Hay 3 tipos de ambientes básicos en los que trabajar dentro de VBA
 Userforms: son herramientas gráficas para la interface con el usuario, es decir, se
pueden crear pantallas de dialogo para que el usuario interaccione, o simplemente
utilizarlos para mostrar información mientras el programa está corriendo, como, por
ejemplo, una barra de progreso. Pueden contener códigos completos e independientes
de los módulos.
 Módulos: son la base de los códigos, son el back end de todo lo que hace la macro,
puede interactuar con los userform y los módulos de clase.
o Los códigos también pueden ser guardados en “Thisworkbook” o cualquiera de
las sheets, pero normalmente esos ambientes se utilizan para códigos
específicos para que se realice cierta acción cuando abra o cierra el Excel.
 Class Module: son módulos para declarar y crear nuevos objetos, con sus propiedades y
funciones definidas. Normalmente se usan cuando se programa de forma destinada a
objetos, es decir, uno referencia a objetos y sus funciones, en vez de indicar
absolutamente todo lo que tiene que hacer el programa
o Sub y Function:
 Existen dos tipos de procedimientos básicos en VBA
 Sub: son “subrutinas” que básicamente van a contener un código especifico, para
realizar una tarea. Ejemplo: un SUB que abra un Excel y coloque títulos en las primeras
líneas. Su único trabajo va ser hacer eso. Puede ser llamado por otros SUB o por
Function
 Function: idéntico al SUB, la única diferencia es que no puede ser corrido de forma
independiente, sino que precisa de ser llamado por un SUB. También, acepta correr
argumentos. Normalmente, devuelve un valor. Ejemplo: una función que coloca en la
celda A1, cuanto es el resultado de una multiplicación, de dos números que brinda el
usuario.
 Mas información: http://www.excel-easy.com/vba/function-sub.html
o Programando:
 Variables: son declaraciones que pueden contener diferentes tipos de información, pero que
siempre van a tener el mismo nombre que les dimos en un principio. Ejemplo: declaro la
variable “Nombre”, y esa variable puede tener contenida cualquier valor que yo desee, puede
ser Alejandro, o Martin, o Esteban, o cualquier otro valor que no sea un nombre, podría tener
un valor como “banco astillado”. Cada vez que yo me refiera a la variable “Nombre”, me voy a
estar refiriendo a su valor, y no por el nombre en que fue declarada.

 Normalmente se declaran variables con nombres representativos de los valores que


pueden llegar a contener, para facilitar la lectura del código y su entendimiento
 Tipos de variables: hay muchos tipos de variables, y se pueden crear aún más dentro de
los Class Module, abajo detallo los más utilizados:
o Integer: es una variable que contiene solo números enteros.
o String: variable que solo contiene texto. Puede contener números si están entre
comillas. “12”
o Long: variable que contiene números más grandes que el integer
o Char: solo contiene caracteres
o Boolean: esta variable solo puede ser “True” o “False”
o Object: este tipo de variable se refiere a objetos, ya sean otros programas o
mails, etc. Un objeto, no es información, como lo sería un numero o un
programa, sino que es algo, que existe, y tiene propiedades como también
funciones.
o Variant: puede ser cualquier tipo de valor
 Por más que puede tener cualquier tipo de valor dentro, es
recomendable solo usarlo cuando se tiene la duda de si se está
trabajando con un objeto o con información
o Double: variable que contiene números no enteros, es decir, con coma
o Mas información: http://www.excel-easy.com/vba/variables.html}
 Iniciando un código:
 Sub: el sub, se inicia con un “Sub” y un nombre sin espacios y se termina con un “End
Sub”. La misma idea se cumple para las Functions.
 Como moverse entre celdas
o Range (): se refiere al rango con el que se quiere trabajar. Ejemplo: range(“a1”).
select, se refiere a que seleccione la celda “A1” (si bien hay otro tipo de
referencia [Rows, Columns] este resulta más sencillo al leer el código)
 Propiedades del objeto Range:
 .select: lo selecciona
 . copy: lo copia
 . cut: lo corta
 . paste: pega información en el rango
o Hay formas especiales de pegar información.
https://analysistabs.com/vba-
code/range/m/pastespecial/
 End (): cumple la misma función de apretar ctrl y alguna de las
flechas, es decir, va a ir hasta la última celda con valor desde la
celda que esta seleccionada. Esto no quiere decir que ira hasta
la última celda con valor de todo el Excel, ya que, si hay una
celda en el medio vacía, solo llegara hasta esa celda.
o Xldown: lo mismo que ctrl y flecha para abajo
o Xlup: lo mismo que ctrl y flecha para arriba
o Xltoleft: lo mismo que ctrl y flecha para la izquierda
o Xltorigth: lo mismo que ctrl y flecha para la derecha
 Offset (): este código se mueve una cierta cantidad de espacios
entre celdas. Está conformado por dos partes, “Offset (0,0)”, la
primera (antes de la coma) se refiere a las líneas, y la segunda, a
las columnas. Ejemplos:
o Offset (1,0): se va a mover hacia abajo una celda
o Offset (0,1): se va a mover una columna hacia la
derecha
o Offset (1,1): se va mover una fila para bajo y una
columna para la derecha
o Offset (-1,0): se va a mover una fila hacia arriba
 Esto no puede hacerse estando en la fila 1 ya
que no existen filas anteriores a la 1, esto tirara
error
o Offset (0,-1): se va a mover una columna a la derecha
 No se puede hacer en la columna A ya que no
existe columnas anteriores a A
 Activecell: se va a referir a la celda que esta seleccionada
actualmente
 Selection: se va a referir al rango que esta seleccionado.
o Puede usarse como activecell.
 Range (range (), range ()). select: va seleccionar todo lo que este
desde el primer rango, hasta el segundo rango indicado
 IF: es una determinada acción que se espera que se haga, si se cumple o no una o más
pruebas lógicas. Prácticamente igual al if del Excel.
o IF … END IF: esta estructura busca testear una prueba lógica, y solo procederá a
realizar una acción si la prueba es verdadera, caso contrario, no hará nada.

o IF …. ELSE … END IF: similar a la estructura básica del IF (e idéntico al IF del


Excel), comprobara la verdad de la prueba lógica, y procederá a realizar una
acción tanto sea verdadera, o falsa.

o IF…ELSEIF…END IF: la primera parte de la estructura es un IF simple, y la


segunda, testea otra prueba lógica y en caso de que sea verdadera, realizara la
acción. Se debe tener en cuenta, que siempre que la primera prueba lógica, no
sea verdadera, se testeara la segunda prueba lógica.

o IFs concatenados: se pueden concatenar estas estructuras indefinidamente,


aunque no es recomendable hacerlo.
o Mas información: http://www.excel-easy.com/vba/if-then-statement.html

 Loop: en español, se lo llama iteración, es una acción que se va a repetir una y otra vez,
indefinidamente, o hasta que se cumpla una condición
o Do.. Loop while: esta acción va a repetirse hasta que se cumpla la condición que
contiene el “Loop while”

o Do While … Loop: ídem al anterior, solo que la condición está contenida en “Do
While”
o For each ... next: este tipo de loop, va a trabajar sobre objetos seleccionados, y
va a realizar una acción determinada por cada uno de los objetos (for each)
seleccionados

o For … to ...next: este loop es similar al for each, pero en vez de trabajar con
objetos seleccionados, va a trabajar con cantidades de veces que debe
repetirse, es decir, se le indicara desde que valor debe comenzar, y en cual debe
terminar

o Mas información: http://www.excel-easy.com/vba/loop.html

 Select Case: cumple la misma función que un IF concatenado, pero es más efectivo, ya
que solo va a realizar una acción si se cumplen ciertos valores de una variable
o Estructura: va a estar conformado por el select case “variable”, el cual va indicar
la variable a la cual se quiere conocer el valor que puede tener. Cada “Case” va a
ser el valor que se espera que tenga la variable, y accione cierto tipo de acción.
Termina con “End select”
o Mas información https://docs.microsoft.com/en-us/dotnet/visual-
basic/language-reference/statements/select-case-statement

Вам также может понравиться