macros vba en excel 2003 y 2007
TRANSCRIPT
![Page 1: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/1.jpg)
Carlos AsenjoMCSE MCT
![Page 2: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/2.jpg)
www.serverms.es
Objetivo del CursoObjetivo del Curso◦ Conceptos básicos◦ Creación de macros◦ Creación de macros◦ Automatizar tareas◦ Conceptos fundamentales de VB Excelp
Contenidos◦ Concepto de macro◦ Creación automática de macro◦ Edición de macro◦ Asignación a objetos
![Page 3: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/3.jpg)
www.serverms.es
ContenidosContenidos◦ Concepto de macro
◦ Creación automática de macro
◦ Edición de macro
◦ Asignación a objetos
◦ Editor VB Excel
![Page 4: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/4.jpg)
www.serverms.es
Conceptos fundamentalesConceptos fundamentales◦ Procedimientos y módulos
◦ Estructuras (IF,For‐Next, Do‐Loop,…)
OPM◦ OPM
◦ Variables, constantes,…Variables, constantes,…
◦ MsgBox, Inputbox,…
◦ Errores y depuración de código
![Page 5: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/5.jpg)
www.serverms.es
Una definición sencillaUna definición sencilla◦ Macro: es un conjunto de instrucciones de código (programado) que permiten realizar una tarea determinada como así también expandir e p pincrementar las prestaciones de Excel.
◦ Las macros se escriben en lenguaje de programación VBA (Visual Basic◦ Las macros se escriben en lenguaje de programación VBA (Visual Basic for Applications) en el editor de VB que incorpora Excel
![Page 6: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/6.jpg)
www.serverms.es
Se pueden definir 4 grandes "áreas" donde se aplicanSe pueden definir 4 grandes áreas donde se aplican las macros que son:
◦ 1. Automatización de tareas y procesos que involucran muchos pasosmuchos pasos◦ 2. Creación de nuevas funciones a medida (aparte de las que ya posee Excel !)◦ 3. Creación de nuevos comandos, complementos y menús.◦ 4. Creación de completas aplicaciones a medida.
![Page 7: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/7.jpg)
www.serverms.es
Automatización de procesos:Automatización de procesos:◦ Todos los días llevamos a cabo las mismas acciones (Centrar, Negrita, Tamaño x, …)Negrita, Tamaño x, …)
◦ Individualmente son muy sencillas, pero en conjunto forman y p jun tedioso trabajo
Ó◦ SOLUCIÓN: Macro
![Page 8: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/8.jpg)
www.serverms.es
Creación de funciones a medida:Creación de funciones a medida:◦ Excel incorpora +‐ 330 funciones que se pueden usar de forma aislada o anidadaaislada o anidada
◦ Ninguna de ellas se ajusta a lo que queremosg j q q
◦ SOLUCION: Macro. Aparecerá en el menú de funciones como una más.
![Page 9: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/9.jpg)
www.serverms.es
Creación de nuevos comandos complementos yCreación de nuevos comandos, complementos y menús:◦ Cada vez tengo que buscar comandos en diferentes menús◦ Cada vez tengo que buscar comandos en diferentes menús
◦ Me vuelvo locoMe vuelvo loco
◦ SOLUCIÓN: Macro. Puedes crear un menú personalizado con tus comandos más frecuentes
![Page 10: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/10.jpg)
www.serverms.es
Creación de aplicaciones a medida:Creación de aplicaciones a medida:◦ Excel es utilizado en muchos campos por muchos usuarios
◦ Las macros te permiten crear todo un programa de software
◦ Lo podrán usar cualquier usuario aunque “no sepa” Excel
![Page 11: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/11.jpg)
www.serverms.es
(OPM)(OPM).Supongamos que tenemos una canasta de frutaObj t í l i f t ( j )◦ Objetos: serían las mismas frutas (naranjas, peras…).◦ Propiedades: serían las características de las frutas (color, olor, sabor textura )sabor, textura…).◦ Métodos: son las acciones que podríamos ejercer sobre las frutas (comprarlas, venderlas, comerlas, almacenarlas, limpiarlas, quitarles la piel,…).
![Page 12: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/12.jpg)
www.serverms.es
En Excel:En Excel:◦ Objetos: un libro excel, una hoja, un rango, una celda, un menú, un gráfico, una tabla dinámica, un cuadro de diálogo,menú, un gráfico, una tabla dinámica, un cuadro de diálogo, las etiquetas de hojas, las columnas, las filas, etc.
◦ Propiedades: por ejemploCelda: alto, ancho, color, bloqueada o desbloqueada,…Hoja: visible u oculta, con o sin líneas de división,…
◦ Métodos: para una hoja◦ Métodos: para una hoja,activar, mover, copiar o borrar.
![Page 13: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/13.jpg)
www.serverms.es
Hablar de macros lenguaje VBA y OPM es lo mismoHablar de macros, lenguaje VBA y OPM es lo mismo.El lenguaje VBA solo está en inglés.L j fá il i i iLenguaje fácil y muy intuitivo◦ Ejemplos de Objetos VBA
Cell (celda) Range (rango) Worksheet (hoja) Workbook (libro)Cell (celda), Range (rango), Worksheet (hoja), Workbook (libro)◦ Ejemplos de Propiedades VBA
Value (valor), Color (color), Format (formato)Value (valor), Color (color), Format (formato)
◦ Ejemplos de Métodos VBACopy (copiar), Protect (proteger), Delete (borrar)
![Page 14: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/14.jpg)
www.serverms.es
Necesario que conozcas la barra de herramientas VBANecesario que conozcas la barra de herramientas VBA◦ Herramientas > Macros
◦ Ver > Barras de Herramientas > Visual Basic
![Page 15: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/15.jpg)
www.serverms.es
Tres formas de acceder al editor:Tres formas de acceder al editor:
H i t > M > Edit d Vi l B i◦ Herramientas > Macros > Editor de Visual Basic
◦ Desde el botón Editor de Visual Basic de la Barra de◦ Desde el botón Editor de Visual Basic de la Barra de Herramientas Visual Basic.
◦ Método abreviado del teclado: ALT+F11
![Page 16: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/16.jpg)
www.serverms.es
![Page 17: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/17.jpg)
www.serverms.es
La Ventana Proyecto VBA Project:La Ventana Proyecto ‐ VBA Project:◦ Muestra XLS (Libros de Calculo) y XLA (Complementos) abiertos(Complementos) abiertos
◦ En nuestro caso VBAProject (Libro1)j
Ventana de Código:
![Page 18: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/18.jpg)
www.serverms.es
Tres métodos:Tres métodos:
M l t◦ Manualmente
◦ Mediante la Grabadora de Macros◦ Mediante la Grabadora de Macros
◦ Combinación de ambas (grabando y modificando el código)(g y g )
![Page 19: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/19.jpg)
www.serverms.es
Objetivo: Escribir el valor 1 500 en la celda A1 de laObjetivo: Escribir el valor 1.500 en la celda A1 de la hoja Excel.
◦ Comenzamos con una hoja vacía◦ Ejecutamos la macro◦ Ejecutamos la macro◦ Deberá escribir en A1, 1500
![Page 20: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/20.jpg)
www.serverms.es
1 Prepara el Editor de VB1. Prepara el Editor de VB1. Crea un nuevo libro Excel y guárdalo con el nombre Libro 1.2. Abre el editor de Visual Basic con las teclas ALT+F11.3. Doble clic en VBAProject (Libro1) para ver las carpetas.4. Doble clic en Hoja1 (Hoja1) para empezar a escribir el código de la macro
2. Escribimos la macro' Esta macro escribe el valor 1500 en la celda A1Sub MiPrimeraMacro()Range("A1").Value=1500End Sub
![Page 21: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/21.jpg)
www.serverms.es
Cinco formas:Cinco formas:◦ Desde el mismo editor
Desde el inicio de la macro pulsar F5Desde el inicio de la macro pulsar F5
◦ Desde ExcelF11 para volver a ExcelHerramientas > Macros > MacroSeleccionamos la macro > Ejecutar
![Page 22: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/22.jpg)
www.serverms.es
◦ Desde Objetos:◦ Desde Objetos:Ver > Barra de Herramientas > DibujoUna vez creado el objeto, Botón Dcho.>Asignar Macro…j , g
◦ Desde botones:Ver> Barra de herramientas > Personalizar.Comandos> Categorías> MacrosC l b tó d B tó d h A i MCon el botón creado: Botón dcho.> Asignar Macro…
◦ Automáticamente:◦ Automáticamente:Cada cierto tiempo, o según la acción del Usuario
![Page 23: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/23.jpg)
www.serverms.es
' Esta macro escribe el 1500 en la celda C10 Esta macro escribe el 1500 en la celda C10◦ Comentario sobre la macro◦ Siempre ha de empezar por ‘◦ Siempre ha de empezar por ◦ En línea y cantidad ilimitadas◦ Muy útiles para macros complejasy p p j◦ No tiene efectos sobre la macro
Sub MiPrimeraMacro()◦ Toda macro comienza con Sub NombreMacro()◦ NombreMacro se utilizara para ejecutar la macro
![Page 24: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/24.jpg)
www.serverms.es
Range("A1") Value = 1500Range( A1 ).Value = 1500◦ Corazón de la macro◦ Objeto: Range(“A1”)◦ Objeto: Range( A1 ).◦ Propiedad: Value◦ Valor: = 1500◦ a la celda A1 de Excel asígnale el valor 1500
End Sub◦ Toda macro termina con End Sub
![Page 25: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/25.jpg)
www.serverms.es
1 Grabar la macro1. Grabar la macro1. Ve al menú Herramientas > Macros 2. Selecciona la opción Grabar nueva macro…3. Se abrirá un cuadro de diálogo como el que se muestra a continuación.
4 Borra Macro 1 y escribe MiPrimeraMacro4. Borra Macro 1 y escribe MiPrimeraMacro5. Pulsa Aceptar. A partir de ahora se grabara cada clic que hagas6. Posiciónate en A1 y escribe 1500
7. Cuando termines presiona o Herramientas > Macros > Detener grabación
![Page 26: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/26.jpg)
www.serverms.es
Ver el códigoVer el código
![Page 27: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/27.jpg)
www.serverms.es
Escrita GrabadaEscrita1. Como la hicimos
1. Creamos un Libro Excel llamado Libro
Grabada1. Como la hicimos
1. Creamos un Libro Excel llamado Libro12 Herramientas > Macros > Grabar macro2. Abrimos el editor de macros con ALT+F11
3. En VBAProject (Libro1) hicimos doble clic en Hoja1 (Hoja1)
4. Escribimos el código de la macro.
2. Herramientas > Macros > Grabar macro…3. En la celda A1 escribimos 15004. Herramientas > Macros > Detener grabación
2. El código de la macro4. Escribimos el código de la macro.
2. El código de la macro1. Con ALT+F11 accedemos al editor de
macros.
1. Con ALT+F11 accedemos al editor de macros.
2. El código que escribimos manualmente fue el siguiente:
2. El código que escribimos manualmente fue el siguiente:‘ escribe el valor 1500 en la celda A1Sub MiPrimeraMacro()
Sub MiPrimeraMacro()' MiPrimeraMacro Macro' Macro grabada el 02/03/2008 por MSLRange("A1").SelectSub MiPrimeraMacro()
Range("A1").Value=1500End Sub
Range( A1 ).SelectActiveCell.FormulaR1C1 = "1500"Range("B1").SelectEnd Sub
![Page 28: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/28.jpg)
www.serverms.es
Escrita GrabadaEscritaComo la hicimos◦ Desventaja: Requiere conocer OPM
GrabadaComo la hicimos◦ Ventaja: No es necesario saber
El código de la macro◦ Ventaja: Código más eficiente y
programar
El código de la macrosintético
' Esta macro escribe el valor 1500 en la celda A1
◦ Desventaja: Código habitualmenteredundante y excesivo
Sub MiPrimeraMacro()Sub MiPrimeraMacro()
Range("A1").Value = 1500
End Sub
Sub MiPrimeraMacro()' MiPrimeraMacro Macro' Macro grabada el 02/03/2008 por MSLRange("A1").SelectActiveCell.FormulaR1C1 = "1500"ActiveCell.FormulaR1C1 1500Range("B1").Select
End Sub
![Page 29: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/29.jpg)
www.serverms.es
Procedimiento SUB Nombre()Procedimiento SUB Nombre()◦ General
Se le llama manualmente desde códigoSe le llama manualmente desde código
◦ Asociado a un eventoEjecuta de forma automáticajNobreObjeto_Evento (ej: Workbook_Open)
Sub Macro ()Range(“A1”)=1500End Sub
![Page 30: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/30.jpg)
www.serverms.es
Procedimiento Function Nombre(Argumentos)Procedimiento Function Nombre(Argumentos)◦ Devuelven un valor resultado de una función
Function Terminar() As BooleanDim x As Byteyx = MsgBox("¿Desea salir?", vbOKCancel, "Salir")If x = 1 ThenActiveCell.Value = "SI"End IfEnd Function
![Page 31: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/31.jpg)
www.serverms.es
Llamar función desde ExcelLlamar función desde Excel◦ Insertar > Función… > Definidas por el Usuario
Function CalcEdad(FechaNac As Date)Dim zFecha As DateCalcEdad = Abs(DateDiff("YYYY", FechaNac, Date))zFecha = DateAdd("YYYY", CalcEdad, FechaNac)If zFecha > Date Then CalcEdad = CalcEdad ‐ 1End Function
![Page 32: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/32.jpg)
www.serverms.es
ArgumentosArgumentos◦ Declarar variable◦ Pedira al usuario el valor del argumento◦ Pedira al usuario el valor del argumento
◦ Variable As tipop
![Page 33: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/33.jpg)
www.serverms.es
Disparar macros según acciones (a nivel de Libro)Disparar macros según acciones (a nivel de Libro)◦ Guardar, abrir, cerrar, imprimir…
Han de escribirse en “ThisWorkbook”
![Page 34: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/34.jpg)
www.serverms.es
Ejemplo:Ejemplo:Private Sub Workbook_Activate()Msgbox "Hola, Excel te saluda“End Sub
Sub Workbook Open()Sub Workbook_Open()Workbooks.Open Filename:=“Ruta”End Sub
Private: macro/función solo se puede llamar desde el mismo modulo
Existen 20 macros de evento
![Page 35: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/35.jpg)
www.serverms.es
Disparar macros según acciones (a nivel de hoja)Disparar macros según acciones (a nivel de hoja)◦ Activarla, desactivarla, crear nueva…
Han de escribirse en “Hoja1(Nombre)”
![Page 36: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/36.jpg)
www.serverms.es
Ejemplo:Ejemplo:Private Sub Worksheet_Activate()MsgBox "Hola, Estas en la Hoja 1"End Sub
Existen 9 macros de evento a nivel hojaExisten 9 macros de evento a nivel hoja
![Page 37: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/37.jpg)
www.serverms.es
Sub Primero()Sub Primero()Range("A1").Value = "Hola"End Sub
Queremos que sea el usuario quien diga que ponerNecesitamos un lugar donde guardar lo que escribaSOLUCIÓN: Variable
DIM variable AS tipo.En este caso: DIM MiVariable AS String.g
![Page 38: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/38.jpg)
www.serverms.es
Ventana para introducir datosVentana para introducir datosSINTAXIS: InputBox(Mensaje, Título).
En nuestro caso: ◦ MiVariable = (“Introduzca datos”, “Entrada de datos”)
Si pulsamos Aceptar los datos se guardaran enSi pulsamos Aceptar, los datos se guardaran en MiVariable
![Page 39: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/39.jpg)
www.serverms.es
11.Sub datos()Dim MiVariable As StringDim MiVariable As StringMiVariable = InputBox("Introduzca Datos", "Entrada de Datos")ActiveSheet.Range("A1").Value = MiVariableActiveSheet.Range( A1 ).Value MiVariableEnd Sub2.2.Sub datos()ActiveSheet.Range("A1").Value = InputBox ("Introduzca Datos", "Entrada de Datos")
End Sub
![Page 40: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/40.jpg)
www.serverms.es
33.Sub Entrar_ValorDi C ill A S iDim Casilla As StringDim Texto As StringCasilla = InputBox("En que casilla quiere entrar el valor", "Entrar Casilla")Texto = InputBox (“Introduzca datos para ” &Casilla, "Entrada de Datos")ActiveSheet Range(Casilla) Value = TextoActiveSheet.Range(Casilla).Value = Texto
End Sub
![Page 41: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/41.jpg)
www.serverms.es
Herramientas > Opciones > Requerir declaración de VarHerramientas > Opciones > Requerir declaración de Var.MUY RECOMENDABLE declarar variablesEjemplo practico:Ejemplo practico:
Sub Entrar_ValorTexto = InputBox(“Introduzca datos", "Entrada de datos")ActiveSheet Range("A1") Value = TestoActiveSheet.Range( A1 ).Value TestoEnd Sub
Option ExplicitOption ExplicitSub Entrar_ValorDim Texto As StringTexto = InputBox(“Introduzca datos", "Entrada de datos")Texto InputBox( Introduzca datos , Entrada de datos )ActiveSheet.Range("A1").Value = TestoEnd Sub
![Page 42: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/42.jpg)
www.serverms.es
Byte | 1 byte | 0 a 255Byte | 1 byte | 0 a 255Integer |2 bytes | ‐32.768 a 32.767D i l |14 b |D i lDecimal |14 bytes |DecimalesDate |8 bytes |FechasString |10 bytes |TextoVariant |22 bytes |= String
![Page 43: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/43.jpg)
www.serverms.es
Dim Var Objeto As ObjetoDim Var_Objeto As ObjetoDim R As Range; Dim Hoja As WorkSheet
Set Variable_Objeto = ObjetoSet R= ActiveSheet.Range("A1:B10“); Set Hoja = ActiveSheet
Ejemplo Practico:Sub macrobj()Di R A RDim R As RangeSet R = ActiveSheet.Range("A10:B15")R.Value = "Hola"R.Font.Bold = TrueEnd Sub
![Page 44: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/44.jpg)
www.serverms.es
Valor lógico SIValor lógico SI
Si C di ió E If C di ió ThSi Condición EntoncesSenténcia1Senténcia2
If Condición ThenSenténcia1Senténcia2Senténcia2
.
.S é i N
Senténcia2..S é i NSenténciaN
Fin SiSenténciaN
End If
![Page 45: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/45.jpg)
www.serverms.es
Ejemplo (Desarrolla tu mismo un ejemplo sencillo)Ejemplo (Desarrolla tu mismo un ejemplo sencillo)
![Page 46: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/46.jpg)
www.serverms.es
Ejercicio:Ejercicio:Entrar una cantidad que representa el precio de algo por el teclado con la instrucción InputBox y guardarlo en la celda A1 de la hojacon la instrucción InputBox y guardarlo en la celda A1 de la hoja activa.
Si el valor entrado desde el teclado (y guardado en A1) essuperior a 1000, pedir descuento con otro InputBox y guardarlo en la casilla A2 de la hoja activacasilla A2 de la hoja activa.
Calcular en A3 el precio de A1 menos el descuento de A2Calcular en A3, el precio de A1 menos el descuento de A2.
![Page 47: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/47.jpg)
www.serverms.es
Sub Precios()
Range("A1").Value = InputBox("Entrar el precio", "Entrar")
Sub Precios()
If Range("A1").Value > 1000 Then
( ) ( )Range("A2").Value = InputBox("Entrar Descuento", "Entrar")
End If
Range("A3").Value = Range("A1").Value ‐ Range("A2").Value
End Sub
![Page 48: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/48.jpg)
www.serverms.es
Sub Precios()Dim Precio As IntegerDim Descuento As IntegerPrecio = 0Precio = 0Descuento = 0Precio = (InputBox("Entrar el precio", "Entrar")( p ( p , )
If Precio > 1000 ThenDescuento = InputBox("Entrar Descuento", "Entrar")p ( , )End If
Range("A1").Value = Preciog ( )Range("A2").Value = DescuentoRange("A3").Value = Precio ‐ Descuento
End Sub
![Page 49: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/49.jpg)
www.serverms.es
‘Compara celdas si son iguales las pone en AZULCompara celdas, si son iguales, las pone en AZUL
S b C di i l2()Sub Condicional2()If Range("A1").Value = Range("A2").Value ThenRange("A1").Font.Color = RGB(0, 0, 255)Range("A2").Font.Color = RGB(0, 0, 255)End IfEnd Sub
![Page 50: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/50.jpg)
www.serverms.es
‘Compara celdas si son iguales las pone en AZULCompara celdas, si son iguales, las pone en AZUL
S b C di i l2()Sub Condicional2()If Range("A1").Value = Range("A2").Value ThenRange("A1").Font.Color = RGB(0, 0, 255)Range("A2").Font.Color = RGB(0, 0, 255)End IfEnd Sub
![Page 51: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/51.jpg)
www.serverms.es
IF ThenIF …… Then ……
IF Th E d IFIF …… Then ……End IF
IF …… Then ……Else …… End IF
IF …… Then …… ElseIf …… Else …… End IF
![Page 52: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/52.jpg)
www.serverms.es
Deberán cumplirse todas las condicionesDeberán cumplirse todas las condiciones
If Condición1 And Condición2 ThenIf Condición1 And Condición2 Then…. SenteciasEnd IfEnd If
![Page 53: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/53.jpg)
www.serverms.es
Deberán cumplirse UNA de las condicionesDeberán cumplirse UNA de las condiciones
If Condición1 Or Condición2 ThenIf Condición1 Or Condición2 Then…. SenteciasEnd IfEnd If
![Page 54: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/54.jpg)
www.serverms.es
No deberá cumplirse la condiciónNo deberá cumplirse la condición
If NOT(Condición) ThenIf NOT(Condición) Then…. SenteciasEnd IfEnd If
![Page 55: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/55.jpg)
www.serverms.es
Var 1 Var2 Rspsta Var1 Var2 RspstaFalse False False False False FalseFalse True False False True TrueTrue False False True False TrueTrue False False True False TrueTrue True True True True True
Y O
![Page 56: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/56.jpg)
www.serverms.es
En función del Valor de UNA casilla variable expresiónEn función del Valor de UNA casilla, variable, expresión….
Select Case ExpresiónC lCase valores :
Instrucciones.C lCase valores :
Instrucciones.….Case Else‘Si no se cumple ninguna de las anterioresSi no se cumple ninguna de las anteriores
End Select
![Page 57: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/57.jpg)
Sub Ejemplo_15()Dim Signo As StringDi V l 1 A I t V l 2 A I t T t l A I t
www.serverms.es
Dim Valor1 As Integer, Valor2 As Integer, Total As IntegerValor1 = Range("A1").ValueValor2 = Range("A2").ValueSi R ("B1") V lSigno = Range("B1").ValueTotal=0If Signo = "+" Then
Total Valor1 + Valor2Total = Valor1 + Valor2End ifIf Signo = "‐" Then
Total = Valor1 Valor2Total = Valor1 ‐ Valor2End ifIf Signo = "x" Then
Total = Valor1 * Valor2Total = Valor1 * Valor2End ifIf Signo = ":" Then
Total = Valor1 / Valor2Total = Valor1 / Valor2End ifActiveCell.Range("A3").Value = TotalEnd SubEnd Sub
![Page 58: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/58.jpg)
Sub Ejemplo_16()Dim Signo As StringDi V l 1 A I t V l 2 A I t T t l A I t
www.serverms.es
Dim Valor1 As Integer, Valor2 As Integer, Total As IntegerValor1 = ActiveSheet.Range("A1").ValueValor2 = ActiveSheet.Range("A2").ValueSi A ti Sh t R ("A3") V lSigno = ActiveSheet.Range("A3").ValueSelect Case signo
Case "+"T t l V l 1 + V l 2Total = Valor1 + Valor2
Case "‐"Total = Valor1 ‐ Valor2
Case "x"Case "x"Total = Valor1 * Valor2
Case ":"Total Valor1 / Valor2Total = Valor1 / Valor2
Case ElseTotal = 0
End SelectEnd Select
ActiveCell.Range("A3").Value = TotalEnd SubEnd Sub
![Page 59: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/59.jpg)
www.serverms.es
Cuadro de diálogo con botonesCuadro de diálogo con botonesVariable = MsgBox( “Mensaje”, Botones, “Título”)MsgBox “Mensaje”, Botones, “Titutlo”MsgBox Mensaje , Botones, Titutlo
VbOK 1 AceptarVbCancel 2 CancelarVbAbort 3 AnularVbRetry 4 ReintentarVbIgnore 5 IgnorarVbY 6 SíVbYes 6 SíVbNo 7 No.
![Page 60: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/60.jpg)
www.serverms.es
Permiten ejecutar más de una vez las mismas sentenciasS b Ejemplo 20 ()Sub Ejemplo_20 ()Dim Nota As IntegerDim Media As SingleN t V l(I tB ("E t N t " "E t N t "))Nota = Val(InputBox("Entrar Nota : ","Entrar Nota"))ActiveSheet.Range("A1").Value = NotaMedia = Media + Nota
( (" " " "))Nota = Val(InputBox("Entrar Nota : ","Entrar Nota"))ActiveSheet.Range("A2").Value = NotaMedia = Media + NotaNota = Val(InputBox("Entrar Nota : ","Entrar Nota"))ActiveSheet.Range("A3").Value = NotaMedia = Media + NotaMedia = Media / 5ActiveSheet.Range("A6").Value = MediaEnd Sub
![Page 61: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/61.jpg)
www.serverms.es
Se repite:Se repite:Nota = Val(InputBox("Entrar la 1 Nota : ","Entrar Nota"))ActiveSheet.Range("AX").Value = NotaActiveSheet.Range( AX ).Value NotaMedia = Media + Nota
Con Estructuras ciclicas ahorramos lineas de código:
![Page 62: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/62.jpg)
www.serverms.es
5 funciones fundamentales:5 funciones fundamentales:
◦ Para (For Next)Para (For…Next)◦ Do While...Loop (Hacer Mientras)◦ Do…Loop While.Do…Loop While.◦ Do..Loop Until (Hacer.. Hasta).◦ For Each
![Page 63: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/63.jpg)
www.serverms.es
Para var =Valor Inicial Hasta Valor Final Paso Incremento Hacera a a a o _ c a asta a o _ a aso c e e o aceSentencia 1Sentencia 2…Sentencia N
Siguiente
For Varible = Valor_Inicial To Valor_Final Step IncrementoSentencia 1Sentencia 2Sentencia N
N V i blNext Variable
![Page 64: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/64.jpg)
www.serverms.es
Ejemplo:je p oSub Ejemplo_21()Dim i As Integer
lDim Total As IntegerDim Valor As IntegerFor i=1 To 10o o 0Valor= Val(InputBox("Entrar un valor","Entrada"))Total = Total + Valor
Next iActiveSheet.Range("A1").Value = TotalEnd Subd Sub
![Page 65: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/65.jpg)
www.serverms.es
Hacer Mientras (se cumpla la condición)ace e t as (se cu p a a co d c ó )Sentencia1Sentencia2Sentencia N
Fin Hacer Mientras
Do While (se cumpla la condición)Sentencia1Sentencia2Sentencia N
Loop
![Page 66: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/66.jpg)
www.serverms.es
Sub Ejemplo_27()Dim Nombre As StringDi Ci d d A S iDim Ciudad As StringWorkSheets("Hoja1").ActivateActiveSheet.Range("A2").ActivateN b I tB ("E t l N b (R t T i ) " "N b ")Nombre = InputBox("Entre el Nombre (Return para Terminar) : ", "Nombre")Do While Nombre <> ""
Ciudad = InputBox("Entre la Ciudad : ", "Ciudad")Ed d I tB ("E t l Ed d " "Ed d")Edad = InputBox("Entre la Edad : ", "Edad")Fecha = InputBox("Entra la Fecha : ", "Fecha")With ActiveCell
Value Nombre.Value = Nombre.Offset(0,1).Value = Ciudad
End WithActiveCell Offset(1 0) ActivateActiveCell.Offset(1,0).ActivateNombre = InputBox("Entre el Nombre (Return para Terminar) : ", "Nombre")
LoopEnd SubEnd Sub
![Page 67: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/67.jpg)
www.serverms.es
DoNombre = InputBox("Entre el Nombre (Return para Terminar) : ", "Nombre")Ciudad = InputBox("Entre la Ciudad : ", "Ciudad")Edad = Val(InputBox("Entre la Edad : ", "Edad"))fecha = CDate(InputBox("Entra la Fecha : " "Fecha"))fecha = CDate(InputBox( Entra la Fecha : , Fecha ))With ActiveCell.Value = Nombreff ( ) l d d.Offset(0, 1).Value = Ciudad
.Offset(0, 2).Value = Edad
.Offset(0, 3).Value = fecha( , )End WithActiveCell.Offset(1, 0).ActivateMas Datos = MsgBox("Otro registro ?" vbYesNo + vbQuestion “Datos")Mas_Datos = MsgBox( Otro registro ? , vbYesNo + vbQuestion, Datos )‘Mientras Mas_Datos = vbYesLoop While Mas_Datos = vbYes
![Page 68: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/68.jpg)
www.serverms.es
DoNombre = InputBox("Entre el Nombre (Return para Terminar) : ", "Nombre")Ciudad = InputBox("Entre la Ciudad : ", "Ciudad")Edad = Val(InputBox("Ent re la Edad : ", "Edad"))fecha = CDate(InputBox("Fecha Nac : ", "Fecha"))( p ( , ))With ActiveCell
.Value = NombreOffset(0 1) Value = Ciudad.Offset(0, 1).Value = Ciudad.Offset(0, 2).Value = Edad.Offset(0, 3).Value = fecha
E d Wi hEnd WithActiveCell.Offset(1, 0).ActivateMas_Datos = MsgBox("Otro registro ?", vbYesNo + vbQuestion, "Entrada de datos")'Hasta que Mas_Datos sea igual a vbNoLoop Until Mas_Datos = vbNo
![Page 69: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/69.jpg)
www.serverms.es
Sub Ejemplo_29()Dim Nuevo Nombre As String_ gDim Hoja As Worksheet'Para cada hoja del conjunto WorkSheetsFor Each Hoja In WorksheetsNuevo_Nombre = InputBox("Nombre de la Hoja : " & Hoja.Name, "Nombrar Hojas")Hojas )If Nuevo_Nombre <> "" Then
Hoja.Name = Nuevo_NombreEnd If
NextEnd SubEnd Sub
![Page 70: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/70.jpg)
www.serverms.es
Sub Ejemplo_30()Dim R As Rangeg'Para cada celda del rango A1:B10 de la hoja activaFor Each R In ActiveSheet.Range("A1:B10")R.Value = InputBox("Entrar valor para la celda " & R.Address, "Entrada de valores")NextEnd SubEnd Sub
![Page 71: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/71.jpg)
www.serverms.es
Crear un cuadro de dialogoCrear un cuadro de dialogoIntroducir, ver, … datosH i O iHerramientas > Opciones
Aplicaciones de aspecto profesionalMás guiado e intuitivo
![Page 72: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/72.jpg)
www.serverms.es
Abrir Editor de VB (Alt+F11)Abrir Editor de VB (Alt+F11)Insertar un objeto Userform.S l i l Lib◦ Seleccionamos el Libro◦ Botón drcho Insertar > Userform
![Page 73: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/73.jpg)
www.serverms.es
Podemos diseñar nuestro formulario con controlesPodemos diseñar nuestro formulario con controles
Situándonos encima vemos la descripción del control
![Page 74: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/74.jpg)
www.serverms.es
Seleccionar objetos: sirve para seleccionar controles insertados en el UserformSeleccionar objetos: sirve para seleccionar controles insertados en el UserformLabel: sirve para poner un título o un texto.Textbox: sirve para que un usuario introduzca datos. C b i i lij ió d liComboBox: sirve para que un usuario elija una opción de una lista.ListBox: sirve para que un usuario rellene o elija varias opciones de una lista.CheckBox: sirve para que un usuario active una determinada función.OptionButton: Seleccionar una opción determinada entre varias posibilidades. ToggleButton: Activa o desactiva alguna funcionalidad. "Encendido" / "Apagado".
![Page 75: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/75.jpg)
www.serverms.es
Frame: sirve para agrupar elementos de un UserformFrame: sirve para agrupar elementos de un UserformCommandButton: es un simple botón que nos permite ejecutar acciones.TabStrip: en un mismo Userform se pueden crear distintas secciones.
l i i U f d di i á iMultiPage: en un mismo Userform se pueden crear distintas páginas.ScrollBar: Para listas con muchos elementos el scrollbar nos permite navegarlos.SpinButton: permite aumentar o disminuir valores.Image: permite introducir imágenes en el Userform.RefEdit: permite hacer referencia a una celda de Excel.
![Page 76: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/76.jpg)
www.serverms.es
![Page 77: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/77.jpg)
www.serverms.es
Establecer objetivo y controlesEstablecer objetivo y controles◦ Objetivo
Crear un Userform para que un usuario complete unos datosCrear un Userform para que un usuario complete unos datos personales (Nombre, Edad y Fecha de Nacimiento). Luego que el usuario complete sus datos al apretar un botón los mismos se l á bl d E lvolcarán en una tabla de Excel.
◦ Los controles que utilizaremos son:◦ Los controles que utilizaremos son:Textbox: para que el usuario ingrese los datosLabel: para darle el nombre de los TextboxpCommandButton: para proceder con el ingreso de datos o cancelar
![Page 78: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/78.jpg)
www.serverms.es
Creamos la tabla en la hojaCreamos la tabla en la hoja
C U f (UF)Creamos un Userform (UF)
En el código del Agregar:
![Page 79: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/79.jpg)
www.serverms.es
Private Sub agregar Click()g g _ ()'definimos las variablesDim iFila As LongDim ws As Worksheet
' Copia los datos a la tabla excelws.Cells(iFila, 1).Value =
Me.TBNombre.ValueSet ws = Worksheets(1)
' Encuenta la siguiente fila vacía
ws.Cells(iFila, 2).Value = Me.TBEdad.Value
ws.Cells(iFila, 3).Value = Me TBFecha Valueg
iFila = ws.Cells(Rows.Count, 1) _.End(xlUp).Offset(1, 0).Row
Me.TBFecha.Value
' Limpa el formularioMe TBNombre Value = ""
' Verifica que se ingrese un nombreIf Me.TBNombre.Value = "" ThenMe.TBNombre.SetFocus
Me.TBNombre.Value = Me.TBEdad.Value = ""Me.TBFecha.Value = ""Me TBNombre SetFocus
MsgBox "Debe ingresar un nombre"Exit SubEnd If
Me.TBNombre.SetFocusEnd Sub
![Page 80: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/80.jpg)
www.serverms.es
Desarrollar funciones macro separadasDesarrollar funciones macro separadasUna única función “Main” que llame a todas
Sub Macro1()'El código de mi Macro1Macro2
Sub Macro1()'El código de mi Macro1Call Macro2
End Sub End Sub
![Page 81: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/81.jpg)
www.serverms.es
Sub SuperMacro()p ()'Asigna Formato NuméricoSelection.NumberFormat = "#,##0;[Red]#,##0“
'Asigna BordesgWith Selection.Borders.LineStyle = xlContinuous.Weight = xlThin
Sub Macro1()Call FormatoNCall Bordesg
.ColorIndex = xlAutomaticEnd With
'Asigna Color de Relleno
Call BordesCall RellenoEnd Sub
With Selection.Interior.ColorIndex = 36.Pattern = xlSolid.PatternColorIndex = xlAutomatic
End WithEnd Sub
![Page 82: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/82.jpg)
www.serverms.es
Sub FormatoN() Sub Relleno()Sub FormatoN()'Asigna Formato NuméricoSelection.NumberFormat =
"# ##0;[Red]# ##0“
Sub Relleno()'Asigna Color de RellenoWith Selection.Interior
C l I d 36#,##0;[Red]#,##0End Sub
Sub Bordes()
.ColorIndex = 36
.Pattern = xlSolid
.PatternColorIndex = xlAutomaticSub Bordes()'Asigna BordesWith Selection.Borders
End WithEnd Sub
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic.ColorIndex xlAutomaticEnd With
End Sub
![Page 83: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/83.jpg)
www.serverms.es
Sub Macro() Modo DepuraciónSub Macro()range("a2).selectEnd Sub
Modo Depuración◦ Ejecuta Paso a Paso◦ Determina mejor donde está el
Sab Macro()Range("A2").Select
error
End Sub
Sub Macro()Sub Macro()If Range("a2").value = 2 ThenMsgBox "Mal“End Sub
![Page 84: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/84.jpg)
www.serverms.es
Podemos convertir nuestra macro en ComplementoPodemos convertir nuestra macro en ComplementoUtil para posible distribución.
Desde el Editor de VB◦ Archivo > Guardar como…◦ Guardar como tipo: Complemento de Microsoft Excel (XLA)
Para instalarlo◦ Herramientas > Complementos > Examinar◦ Herramientas > Complementos > Examinar
![Page 85: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/85.jpg)
www.serverms.es
Existen 3 niveles de seguridad (depende de la versión)Existen 3 niveles de seguridad (depende de la versión)Recomendable “Medio”
![Page 86: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/86.jpg)
www.serverms.es
Al igual que hojas o el Libro las macros se puedenAl igual que hojas o el Libro, las macros se pueden proteger◦ Herramientas > Propiedades de VBAProject >Proteger◦ Herramientas > Propiedades de VBAProject...>Proteger
![Page 87: Macros VBA en Excel 2003 y 2007](https://reader031.vdocuments.net/reader031/viewer/2022012310/5526deb3497959e70f8b45ad/html5/thumbnails/87.jpg)
www.serverms.es
Evitar actualización de pantallaEvitar actualización de pantallaApplication.ScreenUpdating=False
Prevenir cálculos mientras se ejecuta el códigoApplication Calculation = xlCalculationManualApplication.Calculation = xlCalculationManual'El código de la macro aquíApplication.Calculation = xlCalculationAutomaticpp
Evitar el uso de Copiar, Pegar y SeleccionarEvitar el uso de Copiar, Pegar y Seleccionar◦ Range("C10:C12").Copy Range("E10")