You are on page 1of 19

Sesión

5
Trabajando con Visual Basic
para Aplicaciones
• Introducción
• Funciones básicas
• Variables y tipos de datos
• Procedimientos
• Funciones personalizadas
• Jerarquía de objetos
• Referencia de objetos
Microsoft Excel 2016

INTRODUCCIÓN

Excel 5 fue la primera aplicación en el mercado que ofreció Visual Basic para aplicaciones.
Visual Basic aplicaciones está pensado como un lenguaje de secuencia de comandos de
aplicaciones Microsoft común incluido en esta versión de Excel 2016, así mismo, mencionar
que ya se tiene pensado dar lugar definitivamente a la tecnología VSTO (Herramientas de
Office en Visual Studio).

El que podamos implementar macros que realicen actividades de copiar, cortar, pegar,
crear gráficos, hacer formulas, generar deportes, e incluso podemos crear programas a
medida, es decir crear programas para que podamos gestionar de forma más rápida las
actividades de la hoja de cálculo.

Podemos crear programas contables, de ventas, para el área comercial, y algún otro
negocio, ayudara a los usuarios a llevar un mejor control sobre la información que se
dispone en ese instante.

Es importante mencionar que un buen programa, se diseña en base al uso correcto de las
instrucciones que ofrece el programa, tratando que el aplicativo sea liviano y seguro.

PROF. CHRISTIAN MONTOYA 1


Microsoft Excel 2016

FUNCIONES BÁSICAS DE VBA


En algunos casos necesitamos que el sistema operativo se comunique con el usuario, y
esto se hace mediante mensajes que aparecen en una ventana.

En nuestro caso también podemos crear ventanas, para que el programa pueda
comunicarse con el usuario; para ello contamos con comandos que realizan una función
distinta cada uno de ellos.

FUNCIÓN INPUTBOX

Permite recopilar datos que el usuario proporciona al sistema, también puede servir para
mostrar un reporte, según el dato ingresado.

Podemos utilizar el valor ingresado para realizar cálculos, o alguna operación dentro de la
hoja o el libro.

Todo dato que se ingrese mediante el INPUTBOX debe ser almacenado en un repositorio,
que generalmente es una variable, y tiene la siguiente forma:

<variable> = inputbox ( “mensaje” )

Ejemplo :

x = inputbox( “Ingrese el nombre de usuario” )

Esta variable funciona como repositorio

PROF. CHRISTIAN MONTOYA 2


Microsoft Excel 2016

FUNCIÓN MSGBOX

Utilice esta función para mostrar mensajes breves, como errores, advertencias o alertas en
un cuadro de dialogo.

También es usado en algunos casos, para marcar la finalización de un proceso, como por
ejemplo, Fin del reporte, Fin de la impresión, etc.

Para mostrar un mensaje utilizamos la siguiente sentencia:

MSGBOX ( “ texto “ )

Ejemplo:

msgbox ( “Usuario no autorizado “ )

PROF. CHRISTIAN MONTOYA 3


Microsoft Excel 2016

VARIABLES
Una variable es una localización de almacenamiento en memoria con nombre propio. Las variables
pueden almacenar una gran variedad de tipos de datos (texto, número, fecha, etc.).

REPRESENTACIÓN GRÁFICA

Entonces cada casilla o espacio de memoria puede tener un


nombre, y dentro de esa casilla almacenamos datos.

PROF. CHRISTIAN MONTOYA 4


Microsoft Excel 2016

TIPOS DE DATOS

VBA hace más fácil el trabajo de programar, ya que se pueden manipular todo lo
concerniente al tratamiento de datos.

El tipo de dato de refiere a la forma en que se guardan los datos en memoria. Debemos
conocer también que VBA puede ocuparse de la clasificación de los datos
automáticamente, la realiza a costa de una ejecución más lenta y más consumo de
memoria.

En la siguiente tabla se presenta la lista de clasificación integrada en VBA del tipo de dato:

TAMAÑO DE
TIPO DE DATO INTERVALO
ALMACENAMIENTO
Byte 1 byte 0 a 255

Boolean 2 byte True o False

Integer 2 byte -32.768 a 32.768

Long 4 byte -2.147.483.648 y 2.147.483.647


-3.402823E38 a -1,401298 E-45 para valores
Single 4 byte negativos y desde 1,401298E-45 a 3.402823E38
para valores positivos.
1.79769313486232E308 a -4,94065645841247E-
324 para valores negativos y de
Doublé 8 byte
4,94065645841247E-324 a 1.79769313486232E308
para valores positivos.
Currency 8 byte -922.337.000.000.000 a +922.337.000.000.000
Tiene una precisión de hasta 28 decimales con
valores desde
Decimal 14 byte
-7,9228162514264337593543950335 hasta
7,9228162514264337593543950335
Los valores posibles van desde 1 de enero del año
Date 8 byte
100 a 31 de diciembre del año 9999.

PROF. CHRISTIAN MONTOYA 5


Microsoft Excel 2016

TAMAÑO DE
TIPO DE DATO INTERVALO
ALMACENAMIENTO
Una cadena de longitud variable puede contener
String 10 byte un máximo de aproximadamente 2 mil millones de
caracteres.
Object 4 byte Cualquier referencia al tipo Objetc
Cualquier valor numérico hasta el intervalo de un
Variant 16 byte
doublé.
Variant 22 byte Tiene el mismo intervalo de un tipo de dato String.

DECLARAR VARIABLES
Si no se declara el tipo de dato para una variable que se utiliza dentro de un módulo en
VBA, este usa el tipo predeterminado de dato que es el tipo VARIANT.

FORZAR LA DECLARACIÓN DE VARIABLES


Para forzar la declaración de todas las variables que se usen, hay que incluirla la siguiente
instrucción al comienzo del módulo:

OPTION EXPLICIT

Para que esta sentencia se inserte en forma automática al insertar cualquier módulo de
VBA, realicemos lo siguiente:

PROF. CHRISTIAN MONTOYA 6


Microsoft Excel 2016

- Observaremos que la opción Requerir declaración de variables esta


deshabilitada, entonces debe activarla.

Dimensionando la Variable

Una variable se declara o dimensiona para pedir a VBA que reserve un espacio de memoria
para guardar la variable mientras se ejecuta las sentencias.

Aunque no sea obligatoria dimensionar las variables antes de usarlas, al hacerlo mejora el
desarrollo de sus rutinas y las hace más fáciles de depurar.

Para dimensionar una variable utilizamos la sentencia DIM, un ejemplo de ello es lo


siguiente:

DIM CANTIDAD AS INTEGER

PROF. CHRISTIAN MONTOYA 7


Microsoft Excel 2016

ÁMBITO DE LAS VARIABLES

El ámbito de una variable determina el módulo y el procedimiento en el que se puede usar


una variable.

Todas las variables, constantes, subrutinas y funciones de VBA tienen lo que se llama un
ámbito, que se refiere al área en la que una aplicación VBA puede acceder a una variable,
constante, subrutina o función.

Para tener una mejor visión de conjunto, vemos como establecer el ámbito para todos los
elementos de VBA que podemos utilizar variables, constantes, subrutinas y funciones.

Ámbito Como se declara una variable de este ámbito


Un procedimiento Incluye instrucciones DIM, STATIC o PRIVATE dentro del procedimiento.

Al nivel de modulo Incluye una instrucción DIM, antes del primer procedimiento de un módulo.

Todos los módulos Incluye una instrucción PUBLIC, antes del primer procedimiento de un módulo

ÁMBITO A NIVEL DE PROYECTO

Un variable a nivel de proyecto se puede acceder desde cualquier modulo dentro del
proyecto donde haya sido declarada, pues mantiene su valor.

La palabra reservada PUBLIC se usa para declarar una variable a nivel de proyecto, esto
se hace antes de una subrutina o función.

VARIABLES ESTÁTICAS

Hemos mencionado que las palabras reservadas DIM o PUBLIC pueden usarse para
declarar variables; sim embargo, la palabra reservada STATIC también puede usarse para
declarar variables, pero solo a nivel de procedimiento. Un ejemplo seria:

STATIC DISTRITO AS STRING

PROF. CHRISTIAN MONTOYA 8


Microsoft Excel 2016

PROCEDIMIENTOS

Un procedimiento es un bloque de instrucciones de código que sirven para llevar a cabo


una tarea específica. Un procedimiento tiene la siguiente estructura:

TIPOS DE PROCEDIMIENTO

1. PROCEDIMIENTOS SUB
Un procedimiento es un conjunto de instrucciones que ejecuta una acción

2. PROCEDIMIENTOS FUNCTION
Una función es un conjunto de instrucciones que devuelve un valor o una matriz.

3. PROCEDIMIENTOS PROPERTY
Son procedimientos especiales que se usan en los módulos de clase.

IMPORTANTE

Un solo módulo de VBA puede soportar cualquier cantidad de procedimientos SUB,


procedimientos FUNCTION. Se puede elegir la forma de cómo se organiza un módulo de
visual basic aplicaciones. Algunos prefieren escribir todo el código en un solo modulo, otros
prefieren organizar los códigos en diferentes módulos.

PROF. CHRISTIAN MONTOYA 9


Microsoft Excel 2016

Recordemos lo mencionado anteriormente, un procedimiento o subrutina posee la siguiente


estructura:

Entonces siguiendo la estructura anterior, vamos a realizar un procedimiento con el nombre


mensaje (sin código en el contenido).

• Abra un nuevo libro de trabajo


• Presione las teclas ALT + F11
• Inserte un módulo para escribir el código (menú insertar / modulo)
• En la ventana escriba lo siguiente:

PROF. CHRISTIAN MONTOYA 10


Microsoft Excel 2016

FUNCIONES PERSONALIZADAS

La diferencia más notable entre un procedimiento (también llamado Subrutina) y una


función, es que estos últimos tienen la característica de devolver un valor, mientras que
las subrutinas solo ejecutan una acción.

El valor por defecto devuelto por un procedimiento de tipo FUNCTION es del tipo VARIANT.
Debe especificar un tipo de dato devuelto usando la palabra reservada AS.

Toda función tiene una estructura general, que es la siguiente:

Ámbito : No es de carácter obligatorio, es opcional.

Function : La palabra reservada Function es de ingreso obligatorio, para


reconocer que todo lo que venga a partir de ahí son las sentencias de
la función.

Tipo : Es recomendable asignar el tipo de dato devuelto por la función,


puede ser texto, numero, fecha, etc.

IMPORTANTE

Antes de ver algunos ejemplos es importante conocer algunas sentencias de control


que pueden incluirse dentro de un procedimiento o una función.

PROF. CHRISTIAN MONTOYA 11


Microsoft Excel 2016

FUNCIONES INCLUIDAS EN EL VBA

Dentro del entorno de desarrollo de Visual Basic para Aplicaciones en Excel, ya se


incluyen funciones incorporadas, tanto para fechas como para textos:

Funciones de fechas

Now Muestra la fecha y hora del sistema.


Time Muestra la hora del sistema
Date Muestra la fecha del sistema
Day Muestra el día de una fecha
Month Muestra el mes de una fecha
Years Muestra el año de una fecha
Weekday Es un valor que indica el número del día de la semana de una fecha.
Weekdayname Es un valor que indica el nombre del día de la semana de una fecha.

Funciones de texto

Lem Muestra la cantidad de letras de un texto


Trim Elimina los espacios en blanco
Left Extraer a partir de los n primeros caracteres de la izquierda del texto.
Right Extraer a partir de los n primeros caracteres de la derecha del texto.
Mid Extrae a partir de una cierta posición los n siguientes caracteres.
Instr Posición en que se encuentra la primera coincidencia de un carácter.
Ucase Convierte en mayúscula un texto o cadena.
Lcase Convierte en minuscula un texto o cadena.
Strconv Cadena convertida a diferentes formatos.

La función Strconv funciona de la siguiente forma:

PROF. CHRISTIAN MONTOYA 12


Microsoft Excel 2016

Valores de la función Strconv:

Valor Descripción
1 Convierte la cadena a caracteres en mayúscula.
2 Convierte la cadena a caracteres en minúscula.
3 Convierte la primera letra de cada palabra de la cadena en mayúscula.

Funciones Matemáticas

Abs Obtiene el valor absoluto de un número.


Int Obtiene la parte entera de un número.
Round Permite redondear un número a una cierta cantidad de decimales.
Rnd Devuelve un número aleatoriamente entre 0 y 1.

PROF. CHRISTIAN MONTOYA 13


Microsoft Excel 2016

JERARQUÍA DE OBJETOS
Es la que permite determinar qué elementos u objetos están por encima de otros, esto es muy
importante, gracias a esta jerarquía podemos acceder a un objeto determinado.

Recordemos que todos los elementos que trabaja Excel, son considerados objetos, por este motivo
es necesario conocer la jerarquía de objetos.

VBA es considerado un programa orientado objetos, ya que tiene la opción de poder trabajar con
una variedad de objetos.

De seguro usted se preguntara: ¿Qué es un módulo? y ¿Qué es un objeto?

¿QUÉ ES UN MÓDULO?

Un módulo lo podemos definir como un contenedor de macros, los cuales tendrán un conjunto de
códigos agrupados por bloques o procedimientos.

PROCEDIMIENTO: Es un programa que realiza una acción determinada, se construye usando el


lenguaje VBA y pueden ser de tres tipos:

 PROCEDIMIENTO SUB

Es un bloque de código que realiza una acción y responde a un único evento, que es el
click.

 PROCEDIMIENTO FUNCTION

A diferencia del procedimiento SUB, el procedimiento Function, siempre dará un


resultado.

 PROCEDIMIENTO PROPERTY

Permite crear propiedades y métodos personalizados para un nuevo objeto.

PROF. CHRISTIAN MONTOYA 14


Microsoft Excel 2016

¿QUÉ ES UN OBJETO?

Un objeto representa un elemento de una aplicación, como una hoja de cálculo, una celda, un
gráfico, un formulario o un informe. En el código de Visual Basic, debe identificar un objeto antes
de aplicar uno de los métodos del objeto o cambiar el valor de una de sus Propiedades.

COLECCIÓN

Lo podemos definir como un conjunto de objetos, por ejemplo, la colección de hojas, se le


denomina sheets, de esta colección podemos crear hojas, contar las hojas de un libro, etc.

Tener presente que esa colección sheets, también es considerada objeto. Veamos los dos objetos
más importantes de VBA.

PROF. CHRISTIAN MONTOYA 15


Microsoft Excel 2016

En este diagrama vemos:

 El que está por encima de todos los objetos es el programa o aplicación

 Luego de la aplicación tenemos al objeto workbooks, que a su vez es una colección.


En el caso de la colección WorkBooks y WorkSheets la reconocemos porque ambas no hacen
referencia a un libro u hoja en particular.

 Como vemos en la imagen dentro de la colección Workbooks, tenemos a dos objetos:

Workbook1
Workbook2

 Según la imagen dentro de un objeto workbook tenemos a la colección WorkSheets

 Según la imagen dentro de la colección WorkSheets tenemos a los objetos:

WorkSheet1
WorkSheet2

 Dentro del objeto WorkSheet1, tenemos a los objetos Range y Cells

ESTRUCTURANDO MEJOR LA GRÁFICA, QUEDARÍA DEL SIGUIENTE MODO:

APPLICATION

WORKWOOKS

WORKSHEETS

RANGE CELLS

PROF. CHRISTIAN MONTOYA 16


Microsoft Excel 2016

REFERENCIA DE OBJETOS
REFERENCIA A CELDA O RANGO

Si nosotros deseamos hacer una referencia a una celda, podemos utilizar una de los siguientes
comandos:

RANGE

Range ( “celda” )

Range ( “Rango” )

CELLS

Cells( fila , columna )

REFERENCIA A UNA HOJA

Si deseamos dirigirnos a una hoja en particular, utilizamos la siguiente referencia:

Shetts(3) Se refiere a la hoja que ocupa esa posición

REFERENCIA A UN LIBRO

Para referirnos a un libro en particular, usamos la siguiente sentencia:

Workbooks.open(“E:\Sistema.xlsx”)

PROF. CHRISTIAN MONTOYA 17


Microsoft Excel 2016

EJEMPLO 1

Escribir 2018 en la celda D7

Range(“d7”).value = 2018

Cells(7,”d”) = 2018

EJEMPLO 2

Escribir el texto reporte en la tercera hoja del archivo

Sheets(3).cells(2,”C”) = “Reporte”

EJEMPLO 3

Escribir el texto gráfico en el archivo consolidado de la hoja análisis

Workbooks(“consolidado”).sheets(“gráfico”).cells(7,”a”) = “Gráfico”

EJEMPLO 4

Escribir una macro que solicite el nombre de una celda y lo deposite en la celda f4

Nombre = inputbox (“Ingrese el nombre”)

Cells(4,”f”) = nombre

EJEMPLO 5

Escribir una macro que muestre un mensaje donde indique la hora del sistema

Msgbox format(time , “hh:mm”)

PROF. CHRISTIAN MONTOYA 18

You might also like