¿Qué Temas Contiene ?: Mixto
¿Qué Temas Contiene ?: Mixto
BASIC FOR
Mixto APPLICATION.
¿ Qué temas
contiene ?
VBA
debido a su sencillez".
El editor de VBA (VIsual Basic for Application) es sin lugar a duda la herramienta más poderosa de
Excel y esto debido a que nos brinda la posiblidad de automatizar procesos y crear proyectos que
usando VBA.
Las partes mas importantes del editor de VBA son las siguientes:
3. VENTANA DE PROPIEDADES
4. BARRA DE HERRAMIENTAS
5. BARRA DE EVENTOS
Excel Avanzado I
BARRA DE EVENTOS 05
Contiene la relación de los distintos eventos o acciones disponibles para cada objeto. Este tema
¿ Como comenzar a
programar ?
Para empezar a codificar nuestro primer script en VBA creamos un módulo en "Insertar" > "Módulo"
en la barra de herramientas. Iniciamos una sentencia básica usando las palabras reservadas "Sub"
Sub script1 ()
Application.ThisWorkbook.Sheets(“Hoja”).Range(“A1”).Select 'Selecciona rango "A1" del libro
'activo
End Sub
El siguiente Script al cual llamaremos procedimiento a partir de ahora, tiene una sintaxis
establecida, inicia siempre con "sub" seguido de un nombre definido por el usuario y termina en
"End Sub". Lo que va dentro de estos dos textos son las instrucciones del desarrollador.
Comentarios en VBA
03
Seguramente te haz preguntado qué imporntacia tienen las letras en color verde y por qué siempre
tienen un apóstrofe (') antes de iniciarlo. Estos son lo comentarios y es una buena práctica
colocarlos para poder documentar nuestros trabajos, sin embargo su existencia no interfiere con la
¿ Qué es asignación?
La asignación es un concepto muy común dentro de los lenguajes de programación, no sólo en VBA.
Muchas veces este concepto suele confundirse con otro concepto, "igualdad"
a la izquierda"
Sub script1 ()
x = ThisWorkbook.Sheets(“Hoja1”).Range(“A1”).Select 'Asigno a "x" el contenido del rango "A1"
'valor de "x"
End Sub
¿ Cómo ejecuto mi
script?
Existen dos maneras de ejecutar un script, una de ellas es por medio de los comando de ejecución y
Comando de ejecución 01
detener.
procedimiento previamente.
Excel Avanzado I
Para ejecutar la macros desde Excel nos dirigimos hacia la barra de herramientas > Macros y
macro.
¿ Cómo guardo mi
script?
03
El código se guarda en el mismo archivo de Excel, sin embargo para ello es sumamente importate
guardarlo como libro habilitado para macro "(.xlsm)" ya que de no hacerlo toda nuestra información
quedará perdida.
0
Tema 2: Objetos,
propiedades y métodos.
Se puede definir a los objetos como elementos dentro de Excel. Una celda, una hoja, un libro, una
Todo objeto tiene propiedades y métodos, se puede definir a una propiedad como el conjunto de
características de los objetos mientras que los métodos son las acciones que el objeto podría
realizar.
Sub Script1()
Application.ThisWorkbook.Sheets(“Hoja”).Range(“A1”).Select
End Sub
estén abiertos en un cierto momento en Excel. ThisWorkbook hace referencia al archivo que
contiene las macros en ejecución: ActiveWorkbook hace referencia al archivo activo, cuando se
Worksheets o Sheets. Esta colección aloja a todas las hojas que se encuentren de un archivo.
Si hacemos referencia a la hoja activa usamos ActiveSheet.
Range o Cell. Un rango hace referencia a varias celdas. Si hacemos referencia a la celda
Objetos 01
misma categoría. Las colecciones mas comunes son: colecciones de archivos, hojas, gráficos, tablas
Sub Script2()
Workbooks(1).Activate 'Libro 1 activado
End sub
Si ahora queremos usar la coleeción Worksheets o Sheets sería de la siguiente manera:
Sub Script2()
Worksheets(1).Select 'Primera hoja activada
End sub
Sub Script3()
ActiveCell.Select 'Seleccionar celda activa
End Sub
sobreentender que se está trabajando en el objeto actual, sin embargo ¿Qué pasaría si
Sub Script4()
Workbooks("Tarea1.xlsm").ActiveSheet.Range("A1").Select 'Seleccionar celda "A1" de la
End sub
Ambos scripts hacen referencia a la misma celda sin embargo si ahora el foco está en otro libro
abierto la celda activa será la de ese libro. Una instrucción es más específica que la otra
Excel Avanzado I
Propiedades 02
objetos.
Por ejemplo, si deseamos encontrar el nombre de un objeto "Sheet" se usará la propiedad "name"
de la siguiente manera:
Sub Script5()
nombre = Sheets(1).Name 'Nombre de la primera hoja guardada en variable "nombre"
End Sub
Del mismo modo podemos cambiar el nombre de una hoja usando la misma propiedad de la
siguiente manera:
'Sub Script6()
Worksheets(2).Name = "Hoja 1" 'Colocamos "Hoja 1" como nombre de la segunda hoja
End Sub
Existen tambien propiedades de sólo lectura las cuáles pueden ser asignadas a variables como por
ejemplo: ".count"
Sub Script7()
Range("A1:B3").Columns.Count 'Obtiene el numero de columnas del rango
End Sub
Si una persona fuera un objeto de Excel sus propiedades serían el color de sus ojos, el
Para ver una propiedad únicamente seleccione de la lista desplegable después de colocar el punto
Métodos 03
Los métodos son acciones que los objetos pueden realizar. Para llamar a un método primero
Por ejemplo, si deseamos agregar un comentario a una celda podemos usar el método
Sub Script8()
Cells(1,"A").AddComment("InfoPUC") 'Agrega el comentario "Hola Mundo"en "A1"
End Sub
Si ahora queremos, por ejemplo, guardar nuestro libro podemos usar el método "Save" de la
siguiente manera:
'Sub Script9()
Workbooks("Tarea.xlsm").Save 'Guardamos el libro "Tarea.xlsm"
End Sub
Como pudimos notar, los métodos, algunas veces requieren de argumentos para poder funcionar de
Sub Script10()
ThisWorkbook.SaveAs Filename:= "InfoPUC.xlsm" 'Guardamos el libro activo como InfoPUC
End Sub
Siguiendo con el ejemplo de una persona, si fuera un objeto de Excel sus métodos serían
correr, caminar, hablar, dormir. Los métodos son las actividades o acciones que el objeto
Para ver un método al igual que las propiedades seleccione de la lista desplegable después de
A continuación observe la siguiente tabla con los principales y más cómunes objetos, propiedades y
métodos.
Tema 3: Manejo de
eventos
CONDICIONES
Un evento no es nada más que un script que actúa cuando el usuario ha introducido ciertos
parámetros que el sistema reconoce y normalmente están relacionados con los objetos de Excel
Un ejemplo práctico sobre un evento es el llamado "Workbook_Open" el cual quiere decir que se
'Script
Private Sub WorkBook_Open()
Msgbox("Hola InfoPUC") 'Envía un mensaje al abrir el libro
End Sub
Estos eventos se generan automáticamente al dirigirnos a la barra de eventos del editor de VBA.
'Script
Private Sub WorkBook_Open()
End Sub
Sin embargo, esto no es el único evento para este objeto, si hacemos clic al siguiente cuadro
Para descubrir los eventos que tiene un objeto es suficiente con abrir el Editor de Visual Basic y
los objetos y en el panel derecho las propiedades, métodos y eventos de dicho objeto. Podrás
distinguir los eventos porque tienen un icono en forma de rayo (color amarillo):
módulos en VBA
módulos".
(o uno sólo) dónde se escriben las diferentes macros. Los módulos nos permiten organizar el código
módulo creado.
Como ya se había mencionado antes para crear un módulo no dirigimos a la barra de herramientas,
Ejercicios resueltos
otro "HallarIGV", otro llamado "HallarTotal" y uno llamado "HallarTodo" que contenga a los
demás procedimientos. Cada procedimiento deberá leer los valores de la hoja y escribir los
En un módulo llamado "limpieza" cree un procedimiento llamado "Limpiar" el cual pueda borrar
En un módulo llamado "guardar" cree un procedimiento llamado "Guardar" que guarde el libro.
formularios.
de Excel
implementación de un formulario.
Los formularios son otros de los muchos objetos dentro de Excel y son cuadros de diálogo en donde
podremos recopilar información filtrada para después sistematizar nuestra información de manera
adecuada.
EJEMPLOS 01
Para motivarte en el estudio de esta parte del curso observa los siguiente proyectos realizados con
personal de enfermería en la
aplicaciones.
Excel Avanzado I
Mi primer formulario
Espacio de trabajo 01
En la barra de herramientas:
1.Clic en Insertar
2. Clic en Userform
Inmediatamente podrán observar que se creo un formulario en blanco, este será nuestro espacio de
trabajo en donde colocaremos todos los elementos para que el formulario pueda estar listo para
ser programado.
Cuadro de herramientas 02
En la barra de herramientas:
1.Ver
2. Cuadro de herramientas
Excel Avanzado I
el espacio.
Excel Avanzado I
Ventana de propiedades 03
En la barra de herramientas:
1.Ver
2. Venta de propiedades o "F4"
objetos.
Ejecutar un formulario 04
depuración y ejecución:
Otra forma es llamando a la propiedad ".Show" mediante un módulo. Para ello, en un módulo
Sub AbrirFormulario()
"UserForm1" es el nombre por
'Código para abrir formulario
UserForm1.Show 'Propiedad .Show sirve para abrir el formulario defecto del formulario, este
End Sub
valor puede ser modificado
Una vez creado el módulo podemos llamarlo desde un botón en la hoja de cálculo o macros.
Excel Avanzado I
Diseño 05
En la barra de herramientas:
1.Ver
2. Venta de propiedades o "F4"
objetos.
Ejecutar un formulario 06
depuración y ejecución:
Otra forma es llamando a la propiedad ".Show" mediante un módulo. Para ello, en un módulo
Sub AbrirFormulario()
"UserForm1" es el nombre por
'Código para abrir formulario
UserForm1.Show 'Propiedad .Show sirve para abrir el formulario defecto del formulario, este
End Sub
valor puede ser modificado
Una vez creado el módulo podemos llamarlo desde un botón en la hoja de cálculo o macros.
Excel Avanzado I
Ejercicio
encargará de recibir la información de pago de sus clientes, para ello se necesita diseñar el
siguiente formulario:
Diseño 01
Para el diseño se necesitó de los siguientes elementos: cinco (05) labels o etiquetas, cuatro (04)
textbox o cuadros de texto, un (01) combobox o cuadros combinados, dos (02) frames o marcos,
dos (02) optionButtons o botones de opciones, un (01) checkBox o cuadro de marcación y un (01)
"Se puede realizar la modificación de la apariencia del formulario y sus elementos jugando
paso que algunos prefieren obviar pero sin embargo permitiría ahorrar tiempo de diseño y dolores
Identificación de elementos 02
Para la realización de este paso necesitaremos trabajar con la propiedad "name". El paso consiste en
darle un nombre único e irrepetible a cada control del formulario, esto con el fin de luego poder
caracteres especiales ni
identificación
Inicialización de controles 03
Hay algunos controles que requieren de su inicialización de variables, como ejemplo los cuadros
combinados o comboBox los cuales van a desplegar una lista de datos a ser seleccionados.
el formulario.
Excel Avanzado I
Con el evento creado podemos llamar a la misma propiedad RowSource o a la propiedad "AddItem".
Almacenamiento de información 04
Ya con el proceso de diseño completo, lo que faltaría es enviar la información a la hoja de cálculo
para llenar una base de datos. Para ello es importante recordar el refrán:
Diseñamos la siguiente tabla en una hoja llamada "BD", este cuadro se encargará de recibir la
Una recomendación es siempre crear una columna llamada "Key" o llave que sea el indicador
único e irrepetible de nuestra base de datos. Esto ayudará a poder identificar una
fila en particular para un filtrado o una búsqueda. Generalmente esta llave suele
llenarse correlativamente.
Pero, ¿Donde codifico o escribo el código que se encargará de ejecutar el proceso de envío de
información?. Pues analicemos, ¿Cuál es el control del formulario que al ejecutar debe procesar la
Entonces hacemos doble clic en el botón "GUARDAR" para acceder a su evento, tambien lo pueden
hacer haciendo clic derecho y luego "ver código". Al hacer ello se abrirá un espacio de codificación
módulo 1.
entonces, al ejecutar nuestro formulario y llamar la información en sus controles y haciendo clic en el
Para llenar información de manera secuencial en una hoja de cálculo es necesario conocer la
siguiente estrategia:
1. Ubicar la última fila con valor, sin importar si existieran filas vacías anteriormente (de esta
En donde:
Thisworkbook :
Libro actual
Thisworkbook.Worksheets("Hoja1"):
Hoja 1 del libro actual
Thisworkbook.Worksheets("Hoja1").Cells(Rows.Count, "A"):
Retorna el valor de la celda "A1048576". Rows.Count retorna el conteo total de filas, por
defecto 1048576
Thisworkbook.Worksheets("Hoja1").Cells(Rows.Count, "A").End(xlUp):
Se ubica en la última fila con valor de la columna "A". Retorna el valor de dicha celda
Thisworkbook.Worksheets("Hoja1").Cells(Rows.Count, "A").End(xlUp).Rows:
Se ubica en la última fila con valor de la columna "A". Retorna el número de fila.
De la siguiente manera podemos llenar la información fila tras fila utilizando código en VBA.
Cerrar un formulario 05
Si abrir un formulario es representado por ".Show" cerrar uno sería con ".Hide" ¿no?. La repuesta es
no, la propiedad ".Hide" lo que hace es ocultar el formulario, sin embargo esto sigue estando en
ejecución. La forma correcta de cerrar un formulario es a través de "Unload". Entonces el botón que
Option Explicit
'El proceso se ejecuta al hacer clic en el botón "btnGrabar"
Private Sub btnCerrar_Click()
'Cerramos el formulario usando Unload. La palabra reservada "Me" hace referencia al formulario activo, tambien pudo ser
reemplazado con el nombre del formulario, en este caso frmClientes
Unload Me
End Sub