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:
[Link](“E:\[Link]”)
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> = [Link]
Asigna un valor a la propiedad
[Link] = <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
[Link]("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
[Link]
PROPIEDADES DEL OBJETO APPLICATION
ACTIVECELL
Hace referencia a la celda activa en la hoja de cálculo.
Msgbox [Link]
CAPTION
Permite cambiar el título de la ventana
[Link] = “Programación de Evento 2018”
WINDOWSTATE
Permite establecer el estado de la ventana, si esta maximizada, restaurada o
minimizada.
[Link]=xlmaximized
[Link]=xlMinimized
DISPLAYFORMULABAR
Establece si la barra de fórmula debe mostrarse o no.
[Link] = 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 : [Link]
2. CLOSE
Es un método que cierra el libro actual
Cerrando el libro : [Link]
3. OPEN
Es un método que permite abrir un libro, se debe indicar la ubicación.
Abriendo el libro trabajo [Link] "e:\[Link]"
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 = [Link]
3. PATH
Propiedad que muestra la ubicación o la ruta donde esta guardado el libro.
Ubicación del libro : X = [Link]
4. APPLICATION
Propiedad que muestra el nombre del programa donde se encuentra el archivo.
Nombre del programa : x = [Link]
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 : [Link]
Podemos insertar una hoja después de otra, por ejemplo, insertemos una hoja
llamada reporte después de productos.
[Link] After:=sheets(“Productos”)
2. ACTIVATE
Activa una de las hojas del libro activo, por intermedio de su índice o nombre.
Activar hoja vendedores : [Link]
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.
[Link]
4. PREVIOUS
Propiedad que permite mostrar la hoja anterior.
[Link]
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 , [Link] ) = “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 [Link]
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").[Link] = 45
Ejemplo 2:
Range("b6").[Link] = 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