Contenido de las clases (20h)
Primer día
- Caja de mensajes: MSGBOX
- Propiedades RANGE y CELLS
- Ventana inmediato
- Requerir declaraciónd de variables
- Variables y tipos de variables
- Comentarios en el código
- Introducción al IF ELSE
- Bucle FOR contador
- Tabla de multiplicar
- Introducción al SELECT CASE
- Usar nombres de rango
- Bucle DO LOOP
- Uso de OFFSET y el tipo RANGE
Segundo día
- En detalle SELECT CASE
- En detalle IF ELSEIF ELSE
- En detalle FOR
- En detalle DO LOOP
- Constantes
- Alcance PRIVATE o PUBLIC
- Introducción a los ARRAY
- Tipo VARIANT
- Operadores
- Bucle FOR EACH
- Crear funciones
Tercer día
- Asignar arrays/matrices a celdas
- Arrays dinámicos
- Parámetros opciones en funciones
- Nombre de parámetros
- Examinador de objetos: F2
- Bibliotecas: VBA y EXCEL
- Propiedades de la hoja: CODENAME, NAME, HIDDEN
- Añadir una hoja al principio o al final
- Listar las hojas
- Eliminar hojas: DISPLAYALERTS
- Sólo en este libro: THISWORKBOOK
- Cálculo entre varias hojas
- Poner el nombre de cada hoja en su celda A1
- Guardar la hoja en un nuevo libro: WORKSHEET.COPY
Módulos
Cuarto día
- Acceder a varios libros
- Jerarquía de objetos Excel
- Copiar celdas entre libros: RANGE.COPY
- Encontrar duplicados: COUNTIF, USEDRANGE
- Uso de WITH
- Tratamiento de errores
- Ocultar filas según criterio: CURRENTREGION, ROWS
- Eventos del libro: OPEN, BEFORECLOSE, NEWSHEET
- Eventos de la hoja: ACTIVATE/DEACTIVATE, CALCULATE, CHANGE y SELECTIONCHANGE
- Macro automática para cálculo de IVA
Descargar
- archivos.7z — Archivos XLSM realizados en clase
Temario del curso
Lenguaje VBA
- Entorno
- Ventana de código: ALT-F11
- Explorador de proyectos y otras ventanas
- Contraseña al código
- Escritura de código
- Realizar comentarios
- Varias instrucciones en una línea
- Una instrucción en varias líneas
- Sugerencias: CONTROL+ESPACIO
- Variables
- Requerir declaración de variables: OPTION EXPLICIT
- Tipos de datos simples: INTEGER, LONG, DOUBLE, CURRENCY, DATE, BOOLEAN
- Tipo variante: VARIANT
- Objeto: OBJECT
- Alcance local o global; tiempo de vida de las variables
- Constantes
- Tipo definido por el usuario: TYPE
- Operadores
- Asignación
- Aritméticos
- Comparación
- Lógicos
- Concatenación
- Estructuras de control
- Condicionales IF y SELECT CASE
- Bucles: FOR, DO LOOP, FOR EACH
- Acceso a métodos y propiedades con WITH
- Matrices
- Declaración e indexación
- Inicialización directa: ARRAY
- Matriz de 2 o más dimensiones
- Índices máximo y mínimo: LBOUND y UBOUND
- Funciones de texto y array: JOIN y SPLIT
- Matrices dinámicas: REDIM, PRESERVE
- Bucles FOR y FOR EACH en matrices
- Procedimientos: SUB y FUNCTION
- Parámetros por valor y por referencia
- Parámetros opcionales y acceso por nombre de parámetro
- Parámetros variables
- Retorno del resultado d una función
- Módulos y clases
- Visibilidad: PRIVATE, PUBLIC
- Exportar e importar
- Control de errores
- Tratamiento de errores: ON ERROR
- Técnicas de depuración: BREAKPOINT, paso a paso
- Ventana inmediato y ventana de locales
- Funciones incorporadas
- Inspector de objetos
- Funciones de fecha: NOW, MONTH, DATESERIAL, etc.
- Funciones matemáticas: ROUND, RND, SQR, etc.
- Funciones de texto: LEN, UCASE, MID, etc
- Otras funciones: SHELL
Macros y objetos de Excel
- Introducción
- Guardar habilitado para macros: XLSM
- Mostrar la ficha PROGRAMACIÓN
- Proyecto, módulos de clase WORKSHEET y WORKBOOK
- Grabación y ejecución de macros
- Botón de macro
- Objetos
- El examinador de objetos
- Clases, módulos y tipos enumerados
- Propiedades, métodos y eventos
- Colecciones de objetos
- Jerarquía de objetos
- Biblioteca de objetos
- Añadir referencias a otras bibliotecas
- Usar WORD desde EXCEL
- Selección actual
- Rango actual: SELECTION
- Celda actual: ACTIVECELL
- Hoja de cálculo actual: ACTIVEWORKSHEET
- etc.
- Rango de celdas: RANGE
- Celdas: CELLS
- Filas y columnas: ROWS y COLUMNS
- Desplazamiento y redimensión: OFFSET y RESIZE
- Rango usado: USEDRANGE
- Región actual: CURRENTREGION
- Hoja de cálculo: WORKSHEET
- Acceso a la hoja de cálculo por nombre en código o por WORKSHEETS
- Bucle FOR EACH para recorrer las hojas de cálculo
- Añadir o borrar hojas: ADD, DELETE
- Ocultar hojas: HIDDEN
- Proteger o desproteger hojas: PROTECT, UNPROTECT
- Eventos de la hoja: ACTIVATE/DEACTIVATE, CALCULATE, CHANGE y SELECTIONCHANGE
- Libro de cálculo: WORKBOOK
- Abrir, guardar y cerrar libro: OPEN, SAVEAS, CLOSE
- Ruta y nombre del archivo: PATH, NAME
- Diferencia entre libro actual y este libro: ACTIVEWORKBOOK y THISWORKBOOK
- Eventos del libro: OPEN, BEFORECLOSE, NEWSHEET
- El programa Excel: APPLICATION
- Mensajes de aviso: DISPLAYALERTS
- Visualización en pantalla: SCREENUPDATING
- Uso de funciones de Excel: WORKSHEETFUNCTIONS
- Transferencia de datos
- Copiar una hoja en un nuevo libro: COPY
- Copiar datos de un libro a otro
- Copiar y pegar datos con un array dinámico
- Importar datos CSV
- Tablas dinámicas: PIVOTTABLE
- Creación de formularios de usuario
Libro recomendado

Aprender a programar con Excel VBA con 100 ejercicios prácticos
Autor: | Mediaactive |
Editorial: | MARCOMBO, S.A. |
ISBN: | 9788426719027 |
Páginas: | 216 |
Edición: | 1ª |
EAN: | 9788426719027 |
Otros libros:
- Excel VBA Programming for Dummies — John Walkenbach
Apuntes
- Visual Basic: Operadores lógicos, Condicionales, Bucles
- Traducción de las funciones de Excel al inglés…
- Modelo de objetos de Excel
Enlaces
-
Common VBA Statements for Excel VBA Programming &
VBA Functions for Excel VBA Programming — dummies.com - Visual Basic Quick Reference — cheat-sheets.org
Ejercicios
Módulos
Ejercicios de celdas, filas y columnas
-
Formatear celdas no continuas
for each celda in hoja1.UsedRange
if celda.NoteText <> ""
celda.Interior.colorIndex = 20 -
Ocultar algunas filas
with hoja1
filaMax = .UsedRange.Rows.Count
for fila = 2 to filaMax
if .Cells(fila,1).Value < 50
.Rows(indice).Hidden = True -
Mostrar todas las filas
hoja1.Rows.Hidden = false
-
Marcar fines de semana
select case Weekday(celda.value, vbMonday)
case 6 to 7: celda.Interior.ColorIndex = 4
case else: celda.Interior.ColorIndex = xlColorIndexNone -
Encontrar duplicados
=CONTAR.SI(A:A;A2)for fila = 2 to filaMax
if Application.WorksheetFunction.CountIf( _
Columns(1), Cells(fila, 1).Value) > 1 -
Eliminar algunas filas
with hoja1
for fila = filaMax to 2 step -1
if .Cells(fila, 1).Value = "X"
.Rows(fila).delete -
Eliminar filas vacías
for fila = filaMax to 2 steop -1
if Application.WorksheetFunction.CountA(Rows(fila)) = 0
Rows(fila).Delete -
Buscar y reemplazar mediante las funciones: UCASE, INSTR y REPLACE
Ejercicios de hojas
-
Añadir una nueva hoja
Worksheets.Add before:=Worksheets(1)
Worksheets.Add after:=Worksheets(Worksheets.Count)
-
Crear un libro de meses
Application.SheetsInNewWorkbook = 1
for indice = 1 to 11
Worksheets.Add
for indice = 1 to 12
Worksheets(indice).Name = monthname(indice) -
Guardar cada hoja en un libro separado
Application.DisplayAlerts = false
for each hoja in ThisWorkbook.Worksheets
hoja.Copy
ActiveWorkbook.SaveAs ThisWorkbook.path & "\" & ActiveSheet.Name & ".xlsx"
ActiveWorkbook.Close -
Ocultar todas las hojas menos una
for each hoja in Worksheets
if hoja.CodeName <> "Hoja2"
hoja.Visible = xlSheetHidden -
Proteger/Desproteger hojas una a una
for each hoja in ThisWorkbook.Worksheets
hoja.protect password:="···", allowFormattingCells:=Truehoja.unprotect "···"
-
Ocultar las macros: PRIVATE en el SUB y contraseña en las propiedades del proyecto
-
Encabezado y pie de página en cada hoja
for each hoja in Worksheets
with hoja.PageSetup
.centerHeader = Environ("username")
.centerFooter = ThisWorkbook.BuiltinDocumentProperties("creation date") -
Comprobar si existe una hoja
function existeHoja(nombre)
for each hoja in Worksheets
if hoja.CodeName = nombre
existeHoja = True
exit function
Ejercicios en PDF
Codificación de macros
- escribir_macro.pdf — Escribir secuencia en las celdas seleccionadas
- factura_macros.pdf — Macros para la creación de una factura
- filas_cols_vacias.pdf — Eliminar filas y columnas vacías
- macro_de_excel_para_eliminar_duplicados_y_resumir_detalle.pdf —
- marcar_especial.pdf — Marcar las celdas con fórmulas, valores y bloqueos
Funciones de usuario
- application_caller.pdf — Opera sobre el rango donde se aplica la función
- bd_nombres_apellidos_vba.pdf — Función aleatoria ponderada
- calcular_edad.pdf — Función que calcula la edad
- calendario_anual.pdf — Muestra un calendario anual mediante una función matricial
- calendario_mensual.pdf — Calendario mensual mediante una función matricial
- cuenta_bancaria.pdf — Calcula el dígito de control de una cuenta bancaria
- cverr.pdf — Mostrar errores de Excel desde una función
- digito5x3.pdf — Muestra un dígito en 5×3 celdas
- ecuacion_segundo_grado.pdf — Función para resolver una ecuación de 2º grado
- funcion_nif.pdf — Función para calcular la letra del NIF
- funcion_unir.pdf — Función para concatenar un rango de celdas
- la_primitiva.pdf — Función para calcular una primitiva
Miscelánea
- mostrar_imagen.pdf — Evento para mostrar una imagen según el valor de celda
- complemento.pdf — Crear un complemento en Excel con funciones y macros
Artículos relacionados
- Aplicar el filtro de página al resto de tablas dinámicas
- Cálculo del IBAN a partir del CCC
- Convertir cifras en letras
- Convertir una fecha y hora en un número entero largo (y a la inversa)
- Funciones de usuario Excel para la generación de calendarios
- Tabla cartesiana en Excel
- Clase para crear formularios en Excel
- Envío y recepción de encuestas con Excel
- Macro de Excel para eliminar duplicados y resumir detalle
- Macro Excel de consulta por ejemplo