You are on page 1of 23

Sesión

6
Visual Basic para aplicaciones
II
 Jerarquía de Objetos
 Colecciones
 Propiedades y métodos
 Objetos
 Application
 WorkWooks / WorkSheets
 Range
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 2


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 3


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 4


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:

Sheets(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 5


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 6


Microsoft Excel 2016

COLECCIONES
Otro concepto importante en la programación de Visual Basic for Application es el de las
colecciones.

Una colección se define como un grupo de objetos que pertenece a la misma clase (y la
propia colección es un objeto).

Una colección se parece a una matriz, en el sentido que podemos acceder a sus elementos
mediante un índice.

Una de las principales ventajas del uso de objetos VBA para EXCEL es la simplificación del
código de programación, aprovechando así el uso de los elementos las veces que sea
necesario.

Estos son ejemplos de algunas colecciones en excel:

 WORKBOOKS Colección de Libros


 WORKSHEETS Colección de hojas de un libro
 PIVOTTABLES Colección de tablas dinámicas
 CHARTS Colección de gráficos en un libro

PROF. CHRISTIAN MONTOYA 7


Microsoft Excel 2016

PROPIEDADES Y MÉTODOS
Recuerde que VBA es un programa orientado a objetos, y como tal, es necesario trabajar
con dichos objetos para desarrollar procesos o programas a medida.

Cada objeto, asi como en el mundo real tiene características, y en programación a esto se
le denomina propiedades, adicionalmente manejaremos otro concepto, el método.

PROPIEDADES

Las propiedades son atributos o características propias de un objeto.

Es importante mencionar que toda propiedad necesita de una igualdad, ya sea para
depositar el valor correspondiente o para asignarle un dato, ejemplo:

Deposita el valor de una propiedad en una variable

<variable> = objeto.propiedad

Asigna un valor a la propiedad

objeto.propiedad = <valor>

MÉTODOS

Es una acción que puede realizar un objeto.

En la mayoría de los casos, los métodos son acciones y las propiedades cualidades. Si se
utiliza un método, la acción recae sobre el objeto, mientras que, si se usa una propiedad,
se devuelve información acerca del objeto o se cambia una de sus cualidades.

A continuación, veremos cómo aplicar un método a un objeto,

Objeto.método

PROF. CHRISTIAN MONTOYA 8


Microsoft Excel 2016

LOS OBJETOS DE VBA


Los objetos son los bloques fundamentales de construcción de las aplicaciones de Office,
casi todo lo que haga en Visual Basic tiene que ver con la manipulación de objetos.

Igual que en el mundo real estamos rodeados de objetos, en VBA ofrece una gran variedad
de objetos que permite automatizar y personalizar el trabajo diario. Como ya se mencionó
al inicio de esta sesión, los objetos de Excel o cualquier otro programa de office, se
encuentran organizados jerárquicamente:

El objeto más alto según esa jerarquía es el Objeto Application, de ahí se derivan los objetos
Workbooks, Worksheets, Charts, etc.

Dentro del objeto Worksheets se tiene más objetos, Cells, Range, Columns, Rows, etc.

PROF. CHRISTIAN MONTOYA 9


Microsoft Excel 2016

Podemos ser más específicos, si deseamos referirnos a la celda A1

Application.Workbooks("libro1").Worksheets("hoja1").Range ("a1")

Si omitimos muchos objetos y abreviar el código, Excel usa los objetos activos, así el código
anterior quedaría del siguiente modo

Worksheets("hoja1").Range ("a1")

Si conocemos que la hoja 1 es la activa, el codigo se simplifica del siguiente modo:

Range ("a1")

Los objetos del mundo real comparten dos características: todos tienen estado y
comportamiento.

Así como por ejemplo las bicicletas

PROF. CHRISTIAN MONTOYA 10


Microsoft Excel 2016

OBJETO APPLICATION
Es el objeto que está en el nivel más alto de la jerarquía de objetos de VBA.

El objeto Application representa la propia aplicación de Microsoft Excel activa. El uso de


este objeto proporciona toda la información referida a la aplicación que está en uso.

MÉTODOS DEL OBJETO APPLICATION

QUIT
Permite cerrar el programa o la aplicación
Application.quit

PROPIEDADES DEL OBJETO APPLICATION

ACTIVECELL
Hace referencia a la celda activa en la hoja de cálculo.
Msgbox Application.ActiveCell

CAPTION
Permite cambiar el título de la ventana
Application.Caption = “Programación de Evento 2018”

WINDOWSTATE
Permite establecer el estado de la ventana, si esta maximizada, restaurada o
minimizada.
 Application.WindowState=xlmaximized
 Application.WindowState=xlMinimized

DISPLAYFORMULABAR
Establece si la barra de fórmula debe mostrarse o no.

Application.DisplayFormulaBar = False

PROF. CHRISTIAN MONTOYA 11


Microsoft Excel 2016

OBJETO WORKWOOKS
 El objeto Workbooks pertenece a la colección Workbooks

 El objeto Workbooks contiene a otro objeto llamado worksheets.

 El objeto Workbooks es una colección y a la vez un objeto, ya que se refiere al


conjunto de libros abiertos en ese momento.

 Se preguntará, entonces como nos referimos a un libro en especial; es muy sencillo


a través de un índice o de su nombre.

 También es posible el uso de la sentencia THISWORKBOOK , esta sentencia hace


referencia al libro actual.

MÉTODOS DEL OBJETO WORKBOOKS

En el caso de utilizar los métodos, debemos de hacer referencia a la colección, Workbooks,


veamos algunos métodos:

1. ADD
Permite crear un nuevo libro de excel

Creando un nuevo libro : Workbooks.add

2. CLOSE
Es un método que cierra el libro actual

Cerrando el libro : Workbooks.close

3. OPEN
Es un método que permite abrir un libro, se debe indicar la ubicación.

Abriendo el libro trabajo Workbooks.Open "e:\trabajo.xlsx"

PROF. CHRISTIAN MONTOYA 12


Microsoft Excel 2016

PROPIEDADES DEL OBJETO WORKBOOKS

Antes de mencionar las propiedades, recordemos que si deseamos depositar el valor de


una propiedad o asignar un valor; debemos tener una igualdad.

1. COUNT
Muestra el número de libros abiertos actualmente

Contar los libros abiertos : X = Workbooks().name

2. NAME
Muestra el nombre del libro actual

Nombre del libro : X = Workbooks.count

3. PATH
Propiedad que muestra la ubicación o la ruta donde esta guardado el libro.

Ubicación del libro : X = Workbooks.path

4. APPLICATION
Propiedad que muestra el nombre del programa donde se encuentra el archivo.

Nombre del programa : x = Workbooks.Application

PROF. CHRISTIAN MONTOYA 13


Microsoft Excel 2016

OBJETO WORKSHEETS
El objeto workseets solo reconoce a las hojas de cálculo de un libro, y no a las hojas de
tipo gráfico, ni de macro.

También podemos trabajar con el siguiente objeto:

 El objeto ActiveSheet Hace referencia a la hoja activa

MÉTODOS DEL OBJETO WORKSHEETS

En este caso, usaremos la colección, Worksheets, veamos algunos métodos:

1. ADD
Permite crear un nueva hoja de cálculo en el libro activo.

Creando un nueva hoja : Worksheets.add

Podemos insertar una hoja después de otra, por ejemplo, insertemos una hoja
llamada reporte después de productos.

Worksheets.add After:=sheets(“Productos”)

2. ACTIVATE
Activa una de las hojas del libro activo, por intermedio de su índice o nombre.

Activar hoja vendedores : Worksheets.Activate

3. DELETE
Elimina una hoja de cálculo especificando su nombre o el número de índice.

Eliminar hoja incidencias: Worksheets(4).Delete

PROF. CHRISTIAN MONTOYA 14


Microsoft Excel 2016

PROPIEDADES DEL OBJETO WORKSHEETS

Antes de mencionar las propiedades, recordemos que si deseamos depositar el valor de


una propiedad o asignar un valor; debemos tener una igualdad.

1. COUNT
Muestra el número de hojas de un libro de trabajo.

Contar los libros abiertos : X = Worksheets().name

2. NAME
Hace referencia al nombre de la hoja. Por ejemplo, podemos cambiar el nombre de
la tercera hoja del libro.

Worksheets(3).name = “Análisis”

Para las dos siguientes propiedades, usaremos el objeto ActiveSheet, estas


propiedades nos permitirán movernos por las hojas del libro:

3. NEXT
Propiedad que permite mostrar la siguiente hoja.

ActiveSheet.Next.Activate

4. PREVIOUS
Propiedad que permite mostrar la hoja anterior.

ActiveSheet.Previous.Activate

PROF. CHRISTIAN MONTOYA 15


Microsoft Excel 2016

OBJETO RANGE
Representa a una celda o a un conjunto de celdas continuas o discontinuas, permite la
referencia a toda una fila o columna.

Gracias a este objeto, podemos aplicar un formato, valor o fórmula; a las celdas o rango.

MÉTODOS DEL OBJETO RANGE

En este caso, usaremos la colección, Worksheets, veamos algunos métodos:

1. AUTOFILL
Activa la opción autofiltros a partir de la celda especificada.

Range("b5").AutoFilter

2. CLEAR
Borra el contenido y el formato de la celda especificada

Range("b5").clear

3. BORRAR PARTES ESPECIFICAS DE UNA CELDA

Borrar solo el contenido de una celda o rango Range(“c8”).ClearContens

Borrar solo el formato de la celda Range(“c8”).ClearFormats

Borrar el comentario de la celda seleccinada Range(“j9”).ClearComments

PROF. CHRISTIAN MONTOYA 16


Microsoft Excel 2016

4. DELETE
Borra la celda especificada, desplazando las celdas que están por debajo de la
eliminada hacia arriba.

Range("b5").Delete

5. PRINTPREVIEW
Permite mostrar una vista previa

Range("b5").PrintPreview

6. SELECT
Permite seleccionar una celda o un rango.

Range(“h12”).Select

Range(“b4:b23”).Select

7. SORT
Ordena la información de una lista o tabla según la celda especificada.

De la imagen, ordenar la lista por Apellido ascendentemente; el código será:

Range("e4").Sort key1:=Range("f3"), order1:=xlAscending

PROF. CHRISTIAN MONTOYA 17


Microsoft Excel 2016

PROPIEDADES DEL OBJETO RANGE

Recuerde que el objeto Range, se utilizara para trabajar con rangos y celdas.

Para trabajar con este objeto, veremos tres propiedades:

1. PROPIEDAD RANGE

Hace referencia a una celda o rango, indicando la columna en letras y la fila en


número.

Vemos los siguientes ejemplos:

Range(“e4”) = “Inventario”

Range(“b6:b13”) = 2018

Range(“k3” , “k13”) = “Sistema”

2. PROPIEDAD CELLS

Hace referencia a una celda, la diferencia con la anterior, es que podemos controlar
mejor la fila y columna, ya que ambos deben ser valores numéricos en el caso de
esta propiedad.

Vemos los siguientes ejemplos:

Cells (2 , 4) = “Visual”

Cells ( 7 , “d” ) = “Access”

También podemos hacer operaciones, dentro de la propiedad, lo que no sucede con


la propiedad Range.

Cells ( 2+4 , 8 ) = “Idat”

Cells ( 54 , Sheets.count ) = “vba”

PROF. CHRISTIAN MONTOYA 18


Microsoft Excel 2016

3. PROPIEDAD OFFSET

Offset indica desplazamiento, podemos desplazar el indicador de celda desde la


posición inicial, hacia otra celda.

En el caso de la propiedad Offset, al igual que la propiedad

Vemos los siguientes ejemplos:

 Range ( “F12” ) . Offset( 2, 1) = “Internet”

 Cells ( 12 , “f” ) . Offset ( 2, 1) = “Google”

OTRAS PROPIEDADES DEL OBJETO RANGE

PROPIEDAD ADDRESS

Representa la ubicación de la celda actual en una determinada hoja

Msgbox Range ( “M68” ) . Address

Para que el comando sea dinámico, podemos trabajar con la celda activa, del
siguiente modo:

Msgbox ActiveCell.Address

PROPIEDAD VALUE

Permite asignar un dato a una celda, es la propiedad que ya viene por defecto; por
eso que en la mayoría de veces se omite esta propiedad.

Range ( “K12” ) . Value = 200

PROPIEDAD TEXT

Muestra el contenido real de una celda, incluye los formatos que tenga, así cuando
deseamos mostrar el dato de una celda en un mensaje, VBA mostrará tal y como se
ve en la celda.

Msgbox Range ( “E10”) . text

PROF. CHRISTIAN MONTOYA 19


Microsoft Excel 2016

PROPIEDAD COLOR

Podemos asignar un color de fondo, haciendo uso de una gama de colores.

Hasta la versión 2003, podíamos utilizar hasta 56 colores.

A partir de la versión 2007, aquí ya podemos utilizar 256 colores elevado al cubo,
lo que nos da 16777216 colores.

Con respecto al color podemos utilizar:

 ColorIndex que soporte hasta 56 colores

 Color soporta mucho más colores

Ejemplo 1:

Range("b6").Interior.ColorIndex = 45

Ejemplo 2:

Range("b6").Interior.Color = 7520

PROPIEDAD FONT

Propiedad que se utiliza para dar formatos de fuente a los datos de la celda. Debo
aclarar que no reconoce el formato de Subrayado.

o Range ( “b3” ) . Font . fontStyle = “Bold”

o Range ( “b3” ) . Font . fontStyle = “Cursiva”

o Range ( “b3” ) . Font . fontStyle = “Negrita Cursiva”

o Range ( “b3” ) . Font . size = 30

o Range ( “b3” ) . Font . Underline = 30

PROF. CHRISTIAN MONTOYA 20


Microsoft Excel 2016

PROPIEDAD FORMULA

Propiedad que nos permite asignar una fórmula a la celda, tenga en cuenta que la
función debe ser escrita en inglés.

Vemos los siguientes ejemplos:

o Range ( “C10” ) . fórmula = “ = A4 + A6 “

o Range ( “C12” ) . fórmula = “ = sum ( A1 : A8 ) “

o Range ( “C14” ) . fórmula = “ = average ( A1 : A9 ) “

PROPIEDAD FORMULALOCAL

Propiedad que nos permite asignar una fórmula a la celda, la diferencia con la
anterior, es que la fórmula la podemos ingresar tal como lo hacemos en la hoja de
cálculo, en nuestro propio idioma.

o Range("b12").FormulaLocal = "=suma(d3:d8)"

o Range("b12").FormulaLocal = "=promedio(d3:d8)"

o Range("b12").FormulaLocal = "=max(d3:d8)"

o Range("b14").FormulaLocal = "=min(d3:d8)"

PROF. CHRISTIAN MONTOYA 21


Microsoft Excel 2016

FUNCIONES INCORPORADAS EN 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 22


Microsoft Excel 2016

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 23

You might also like