Breve introducción al proceso de desarrollo en Excel b02 - objetos

+17

No comments posted yet

Comments

Slide 1

parte 2: Introducción a VBA: Visual Basic para Aplicaciones

Slide 2

Breve introducción al proceso de desarrollo en Excel ¿Quién usará la aplicación? ¿De dónde vienen los datos que se usarán en la aplicación? ¿Qué datos se almacenan en la aplicación? ¿Cómo se usarán los datos en la aplicación? ¿Qué tipo de salida necesita que proporcione la aplicación?

Slide 3

Módulos Un módulo es una colección de procedimientos y declaraciones VBA que se almacenan formando una unidad. Existen dos tipos de módulos: Módulos estándar Módulos de clase (permiten la definición de nuevos objetos)

Slide 4

Procedimientos Un procedimiento es una unidad de código VBA. La serie de instrucciones encontradas en un procedimiento actúa para llevar a cabo una tarea o calcular un valor. Cada procedimiento tiene un nombre único que lo identifica. Existen dos clases de procedimientos: Sub y Function

Slide 5

Procedimientos Los procedimientos Sub llevan a cabo una o más operaciones y no devuelven ningún valor. Estos procedimientos inician con Sub y el nombre de la macro (), y termina con End Sub. Los procedimientos Function, conocidos como funciones, devuelven un valor. Las funciones son resultado de un cálculo o una prueba (dan un verdadero o falso).

Slide 6

Instrucciones En VBA tenemos una serie de distintas instrucciones. Las instrucciones son un conjunto de palabras clave que tienen como fin realizar una determinada tarea. Estas instrucciones pueden ser métodos, propiedades, objetos y funciones.

Slide 7

Objetos Un objeto es algo con entidad propia dentro de una clase. Una clase es un conjunto de objetos que tienen propiedades comunes, y cuyo comportamiento es similar a los objetos de su clase. Un objeto puede ser manipulado y adquiere formas diferentes. En Excel, por ejemplo, tenemos objetos como la barra de menú, la barra de estado, las celdas, los controles, los cuadros de diálogo, etc. Los objetos pueden ser alterados cambiando sus propiedades y sus métodos.

Slide 8

Objetos, propiedades y métodos Objeto: ¿Qué es? Un perro Propiedades: ¿Cómo es? Pequeño Café y negro Pesa 10 kgs. Métodos: ¿Qué hace? Juega, corre, ladra, come, …

Slide 9

Objetos Existen más de 100 objetos en Excel, pero los más empleados son: Application (aplicación: Excel) Workbook (libro: un archivo de Excel) Worksheet (hoja de cálculo: una hoja del libro de Excel) Range (rango: una o más celdas de Excel) Chart (gráfico: un gráfico de Excel)

Slide 10

Objetos Los objetos poseen una jerarquía (orden en que están unos dentro de otros). Esa jerarquía es importante cuando se hace referencia a los objetos: Application.Workbooks("Libro1").Worksheets("Hoja1").Range("A1") La referencia Application se puede omitir en muchos casos: Workbooks("Libro1").Worksheets("Hoja1").Range("A1") En ocasiones, si se ha activado la hoja, bastará con: Range("A1")

Slide 11

Objetos

Slide 12

Propiedades Las propiedades son características que definen a los objetos de una clase, y que los diferencian de otras clases. Las propiedades definen tanto la apariencia como la posición de un objeto. Por ejemplo, las celdas de la hoja de Excel van a tener distintas propiedades que las barras de herramientas, pues a las celdas les podemos modificar su color de relleno, la fuente, etc. La indicación de una propiedad en VBA siempre tendrá que hacerse con el signo igual y con la siguiente sintaxis: Objeto.Propiedad = características

Slide 13

Objetos y propiedades Ejemplo: Selection.Font.Bold = True El objeto aquí es la celda o celdas seleccionadas y tiene la propiedad font, que es la fuente, o sea, el tipo de letra, la cual, a su vez, tiene la propiedad negrita. Al otro lado del igual está la característica, tenemos un true, que es verdadero, o sea que es verdadero que la fuente en las celdas seleccionadas estarán en negrita cuando se ejecute esta macro.

Slide 14

Objetos y propiedades Cuando se trabaja con los objetos se efectúa alguna de las siguientes: Establecer las propiedades de un objeto Obtener las propiedades de un objeto Ejecutar los métodos de un objeto

Slide 15

Trabajar con las propiedades La sintaxis para establecer las propiedades de un objeto es: Objeto.NombrePropiedad = Valor Ejemplo: Range("A1").Value = 10 La sintaxis para obtener el valor de las propiedades de un objeto es: Nombre_Variable = Objeto.NombrePropiedad Ejemplo: Dim sValor As Single sValor = Range("A1").Value

Slide 16

Métodos Los métodos son funciones internas de un determinado objeto que permiten realizar funciones sobre él o sobre otro objeto. La sintaxis para un método es: objeto.método Ejemplo: Ejecutar el método Open de un libro: Workbooks("Libro1").Open A veces los métodos tienen argumentos que pueden ser necesarios u opcionales. Ejemplo: ThisWorkbook.SaveAs Filename:= "Presupuesto"

Slide 17

Métodos Estos son algunos de los métodos más usados en Excel: Activate: Se usa para activar un objeto. Calculate: Se usa para ejecutar cálculos. Clear: Se usa para eliminar objetos. Close: Se usa para cerrar hojas, carpetas y otros. Copy: Se usa para copiar objetos. Cut: Se usa para recortar objetos. Offset: Se usa para desplazarse entre las celdas. Paste: Se usa para pegar el contenido del portapapeles. Select: Se usa para seleccionar un objeto o un área.

Slide 18

Creación de procedimientos Un procedimiento siempre empieza con la instrucción: Sub Nombre_Procedimiento() Y termina con la instrucción: End Sub

Slide 19

Ejemplo 1 Crear un procedimiento que ponga el texto "Buenos días" en la celda A1 de la hoja de Excel.

Slide 20

Ejemplo - Solución Sub BuenosDias() ' El objeto es el rango de celdas A1 y se cambia la propiedad Value Range("A1").Value = "Buenos días End Sub

Slide 21

Nota 1 sobre el código Todo el código que aparece después del símbolo ' es un comentario, y por tanto no es leído por Visual Basic, y aparecen como texto en color verde en el Editor de Visual Basic. Los comentarios son muy útiles para explicar qué hace la macro o cuál es la función de alguna parte de la macro. También son importantes cuando la macro debe ser empleada por otra persona para explicar la lógica que sigue la macro. A la vez, son útiles cuando el programador va a revisar la macro tiempo después, pues así va a recordar aspectos relevantes relacionados con la programación de la macro específica. En los ejemplos se usan para dar explicaciones del código.

Slide 22

Nota 2 sobre el código En Visual Basic se emplea el apóstrofe ' para insertar comentarios. Este símbolo es distinto de ‘ por lo que hay que tener cuidado. De igual manera se emplean las comillas dobles para indicar rangos, nombres de hojas, valores de variables tipo String (generalmente son texto). Por ejemplo, se emplean con el objeto Range("A1:B5"). También debe tenerse en cuenta que " no es lo mismo que “.

Slide 23

Nota 3 sobre el código Hay distintas partes donde se puede colocar el código de las macros. El sitio más recomendable es en un “módulo”. En un libro de Excel o en el libro personal de macros se pueden introducir distintos módulos. Se da clic en Insertar y se elige Módulo.

Slide 24

Ejemplo 2 Elabore un procedimiento que coloque ceros en las celdas de A1 a A4.

Slide 25

Ejemplo - Solución Sub Ceros() ' El objeto es el rango de celdas A1:A4 y se cambia la propiedad Value a cero Range("A1:A4").Value = 0 End Sub

Slide 26

Ejemplo 3 Amplíe la funcionalidad de la macro BuenosDías elaborada anteriormente. Además de escribir "Buenos días" en la celda A1, lo efectuará en el rango de la celda A1 a la celda A8, y se pondrá el texto en negrita y color rojo.

Slide 27

Ejemplo – Solución 1 Sub BuenosDias2a() ActiveSheet.Range("A1:A8").Value = "Buenos días" ActiveSheet.Range("A1:A8").Font.Bold = True ' RGB es una función en la que se combinan 256 nivles de rojo (R), ' de verde (G) y de azul (B) para formar más de 16 millones de colores ' distintos. ActiveSheet.Range("A1:A8").Font.Color = RGB(255,0,0) End Sub

Slide 28

Ejemplo – Solución 2 Sub BuenosDias2b() ActiveSheet.Range("A1:A8").Value = "Buenos días" ActiveSheet.Range("A1:A8").Font.Bold = True ' Varios colores se pueden indicar como vbBlue, vbRed, vbYellow, etc. ActiveSheet.Range("A1:A8").Font.Color = vbRed End Sub

Slide 29

Ejemplo – Solución 3 Sub BuenosDias2c() ActiveSheet.Range("A1:A8").Value = "Buenos días" ActiveSheet.Range("A1:A8").Font.Bold = True ' ColorIndex es una propiedad que toma valores entre 0 y 55. ' Cada número es un color distinto. ActiveSheet.Range("A1:A8").Font.ColorIndex = 3 End Sub

Slide 30

Colecciones Una colección es un grupo de objetos similares. Workbooks y Worksheets son colecciones. Por ejemplo, “Libro1” es un ejemplo de la colección Workbooks.

Slide 31

Propiedad Count Las colecciones soportan una propiedad llamada Count. Esta cuenta el número de elementos en una colección.

Slide 32

Ejemplo 4 Elabore una macro para saber el número de hojas que hay en un libro.

Slide 33

Ejemplo – Solución Sub CuentaHojas() ' Define la variable iContadorHojas como un número entero Dim iContadorHojas As Integer ' La variable obtiene su valor de la propiedad .Count del objeto Worksheets iContadorHojas = Worksheets.Count ' Se presenta el resultado por medio de un cuadro de mensaje MsgBox "Este libro tiene " & iContadorHojas & " hojas." End Sub

Slide 34

Ejemplo 5 Elabore una macro que indique: ¿En cuál carpeta está instalado Excel? ¿Cuál es el sistema operativo en uso? ¿Cuál es el nombre del usuario registrado en esta instalación de Excel? ¿Cuántas hojas tiene el libro activo? ¿Está guardado el libro activo?

Slide 35

Ejemplo – Solución Sub PropiedadesApp() MsgBox "Excel está instalado en " & Application.Path MsgBox "El sistema operativo es " & Application.OperatingSystem MsgBox Application.UserName & " es el usuario que está registrado" MsgBox "Este libro tiene " & Worksheets.Count & " hojas" MsgBox "¿Guardó el libro? " & ThisWorkbook.Saved End Sub

Slide 36

Objeto Application Algunas propiedades del objeto Application: ActiveWorbook ActiveSheet ActiveCell ThisWorkbookMailsystem OperatingSystem Selection

Slide 37

Objeto Application Algunos métodos del objeto Application: MailLogon MailLogoff Quit Run

Slide 38

Ejemplo 6 Abra el archivo Macros1.xlsx y elabore una macro que, en la hoja “Ejemplo1”, calcule el promedio de los datos del rango B3:B8. Nota: Debe crearse una hoja que se llame Ejemplo1.

Slide 39

Ejemplo – Solución Sub FuncionesIntegradas() ' Define una variable que se llama sRespuesta Dim sRespuesta As Single ' Se emplea la propiedad Average en el rango B3:B8 de la hoja Ejemplo1 sRespuesta = Application.Average(Worksheets("Ejemplo1").Range("B3:B8")) ' El resultado los presenta en un cuadro de mensaje MsgBox "El promedio es " & sRespuesta End Sub

Slide 40

Ejemplo 7 Elabore una macro que cierre Excel.

Slide 41

Ejemplo – Solución Sub TerminarExcel() ' Aplica el método Quit del objeto Application Application.Quit End Sub

Slide 42

Ejemplo 8 Elabore una macro que cierre Excel, pero que primero guarde el libro.

Slide 43

Ejemplo – Solución Sub TerminarExcel2() ' Primero emplea el método Save del objeto ThisWorkbook ThisWorkbook.Save Application.Quit ' También puede emplearse la instrucción: ' ThisWorkbook.Close SaveChanges:=True End Sub

Slide 44

Ejemplo 9 Elabore una macro para guardar un archivo seleccionando una ubicación.

Slide 45

Ejemplo – Solución Sub guardar_archivo() ' Define la variable sArchivo Dim sArchivo ' La instrucción GetOpenFilename abre el cuadro de diálogo para guardar ' El guión bajo se emplea para que el código no sea muy extenso a la derecha sArchivo = Application.GetOpenFilename("Hoja de Excel , *.xls*", _     , "Seleccione archivo ") End Sub

Slide 46

Ejemplo 10 Elabore una macro que cambie la barra de título de Excel y que cambie el símbolo del puntero del mouse al puntero de espera.

Slide 47

Ejemplo – Solución Sub BarraTituloExcel() ' La leyenda de la barra de título de Excel se cambia con la propiedad Caption Application.Caption = "Curso Excel Avanzado" ' El símbolo del puntero se cambia con la propiedad Cursor Application.Cursor = xlWait 'Para regresar al cursor normal usa: Application.Cursor = xlNormal End Sub

Slide 48

Objeto Workbook Algunos métodos del objeto Workbook: Activate Close Save SaveAs PrintOut

Slide 49

Ejemplo 11 Elabore una macro que abra un libro nuevo, que en la celda A1 de la Hoja1 de ese libro coloque el valor 100, que cierre el libro y que después dé un mensaje que indique que el libro se cerró.

Slide 50

Ejemplo – Solución Sub LibroEjemplo2() ' Define la variable wbNuevoLibro que es el nuevo libro que se va a crear Dim wbNuevoLibro As Workbook ' La instrucción Set le asigna valor a la variable y esto lo hace con el método ' Add del objeto Workbooks Set wbNuevoLibro = Workbooks.Add ' Pone el valor 100 en la celda A1 de la hoja1 wbNuevoLibro.Worksheets("Hoja1").Range("A1").Value = 100 ' Cierra el libro wbNuevoLibro.Close ' Muestra un cuadro con el mensaje de que el libro se cerró MsgBox "El libro se cerró." End Sub

Slide 51

Objeto Worksheet Algunos métodos del objeto Worksheet: Activate Add CheckSpelling Delete

Slide 52

Ejemplo 12 Elabore una macro que agregue una hoja al libro activo (debe tenerse un libro abierto) y que le ponga la fecha de hoy como nombre a la hoja nueva.

Slide 53

Ejemplo – Solución Sub MiNuevaHoja() ' Crea la variable wsNuevaHoja que es la hoja que se va a crear Dim wsNuevaHoja As Worksheet ' Asigna valor a la variable creando la hoja nueva Set wsNuevaHoja = Worksheets.Add ' Pone como nombre de la hoja la fecha, en formato mes, día, año wsNuevaHoja.Name = Format(Date, "mmm d, yyyy") End Sub

Slide 54

Ejemplo 13 Cree un procedimiento nuevo llamado EjercicioObjetos de modo que permita hacer lo siguiente: Crear un libro nuevo Agregar una hoja de cálculo nueva al libro Asignar el nombre “Ejercicio” a la hoja creada Guardar el libro como “LibroEjercicioObjetos”

Slide 55

Ejemplo – Solución Sub EjercicioObjetos() ' Crea una variable para el libro nuevo y otra para la hoja nueva Dim wbLibroNuevo As Workbook Dim wsHojaNueva As Worksheet ' Crea el libro nuevo y deespués la hoja nueva dentro del libro creado Set wbLibroNuevo = Workbooks.Add Set wsHojaNueva = wbLibroNuevo.Worksheets.Add ' Pone nombre a la hoja wsHojaNueva.Name = "Ejercicio“ ' Guarda el libro con el nombre LibroEjercicioObjetos wbLibroNuevo.SaveAs ("LibroEjercicioObjetos") End Sub

Slide 56

Ejemplo 14 Una vez realizado el ejercicio anterior, agregue los siguientes valores en el rango A1:A4: 20, 50, 70, 30 Cree otro procedimiento y llámelo GuardaHoja. Este procedimiento debe probar que el libro haya sido guardado. Si no ha sido guardado, guárdelo y despliegue un mensaje que diga que ha sido guardado. Si ya ha sido guardado, despliegue un mensaje que diga que ya ha sido guardado.

Slide 57

Ejemplo – Solución Sub GuardaHoja() ' Primero determina si el libro esta guardado a través de la propiedad Saved If Workbooks("LibroEjercicioObjetos").Saved = True Then MsgBox "Este libro ya estaba guardado" Else ' Si el libro no está guardado, usa el método Save para guardarlo Workbooks("LibroEjercicioObjetos").Save MsgBox "El libro ha sido guardado" End If End Sub

Slide 58

Ejemplo 15 Elabore una macro que envíe por e-mail los datos que se encuentran en el rango de celdas A1:B5.

Slide 59

Ejemplo - Solución 'Requiere tener instalado y configurado Outlook Sub EnviarRangoEmail() ' Define el rango de celdas que va a enviar por correo ActiveSheet.Range("A1:B5").Select ActiveWorkbook.EnvelopeVisible = True ' Usa el método MailEnvelope With ActiveSheet.MailEnvelope .Introduction = "Este es un ejemplo." ' Pone un texto antes de las celdas .Item.To = "ggabriell@yahoo.com" ' Dirección a la que se envía el mail .Item.Subject = "Probando envío de correo" ' Asunto del correo .Item.Send ' Envía el correo End With End Sub

Slide 60

Ejemplo 16 Elabore un procedimiento que va a limpiar o borrar las celdas de A1 a A4.

Slide 61

Ejemplo - Solución Sub Borrar() ' Usa el método Clear Range("A1:A4").Clear End Sub

Slide 62

Ejemplo 17 Elabore una macro que seleccione una columna y que modifique el ancho de una columna, por ejemplo, la columna G. El nuevo ancho debe ser 5.

Slide 63

Ejemplo - Solución Sub AnchoColumna() ' Primero selecciona la columna Columns("G").Select ' Cambia el ancho con la propiedad ColumnWidth Selection.ColumnWidth = 5 End Sub

Slide 64

Ejemplo 18 Elabore una macro que seleccione una serie de columnas y que les modifique el ancho, por ejemplo, las columnas G a J. El nuevo ancho debe ser 15.

Slide 65

Ejemplo - Solución Sub AnchoColumnas() ' Selecciona las columnas Columns("G:J").Select ' Cambia el ancho Selection.ColumnWidth = 15 End Sub

Slide 66

Ejemplo 19 Elabore una macro que modifique el ancho de las columnas G a J, pero sin seleccionar las columnas. El nuevo ancho debe ser 15.

Slide 67

Ejemplo - Solución Sub AnchoColumnas2() ' Cambia el ancho usando la propiedad ColumnWidth Columns("G:J").ColumnWidth = 15 ' En este caso seleccionar es innecesario. ' Además seleccionar hace que las macros sean más lentas End Sub

Slide 68

Método Add Las colecciones pueden aceptar nuevos elementos que se agreguen. Por ejemplo, para agregar un libro nuevo se emplea la instrucción: Workbooks.Add Para agregar una hoja nueva se emplea la instrucción: Worksheets.Add

Slide 69

Objeto Range Range es uno de los objetos más empleados. El objeto Range puede ser: Una sola celda Una selección de celdas Selecciones múltiples Una fila o una columna Un rango 3D

Slide 70

Objeto Range Algunas propiedades del objeto Range son: Address Column Count Font Formula Offset Resize Row Value Y algunos de sus métodos son: Activate AddComment AutoFill Calculate Clear Copy Cut Delete Merge Select

Slide 71

Ejemplo 20 En un libro nuevo introduzca los siguientes valores en las celdas indicadas de la Hoja1 de un libro de Excel: B1 100, B2 200, B3 300, B4 =SUMA(B1:B3) En el editor de VBA cree un procedimiento llamado PropiedadesRango que realice lo siguiente: Activar la celda A1 de la Hoja1 Desplazarse 5 filas hacia abajo y 2 columnas hacia la derecha. Indicar usando un mensaje cuál es la celda activa. Indicar usando un mensaje el valor de la celda B4. Indicar usando un mensaje la fórmula de la celda B4.

Slide 72

Ejemplo - Solución Sub PropiedadesRango() ' Activa la celda A1 de la Hoja1 Worksheets("Hoja1").Range("A1").Activate ' Se desplaza 5 filas hacia abajo y dos columnas a la derecha ActiveCell.Offset(5, 2).Activate ' Obtiene las propiedades y las presenta en cuadros de mensaje MsgBox "La celda activa actual es " & ActiveCell.Address MsgBox "El valor de la celda B4 es " & Range("B4").Value MsgBox "La fórmula de B4 es " & Range("B4").Formula End Sub

Slide 73

Ejemplo 21 Crear una macro que permita seleccionar un rango de tamaño desconocido y que indique el rango seleccionado por medio de un cuadro de texto.

Slide 74

Ejemplo – Solución Sub SeleccionarRango() ' Usa la propiedad Address para mostrar el rango de celdas seleccionadas MsgBox "El rango seleccionado es " & Selection.Address End Sub

Slide 75

Ejemplo 22 Elabore una macro que permita copiar y pegar un rango cualquiera y lo pegue en la celda F3.

Slide 76

Ejemplo – Solución Sub CopiaryPegar() ' La macro parte de que hay unas celdas seleccionadas Selection.Copy ' Se ubica en la celda F3 Range("F3").Select ' Pega las celdas seleccionadas ActiveSheet.Paste Application.CutCopyMode = False End Sub

Slide 77

Ejemplo 23 Crear una macro que agregue una nueva hoja de trabajo.

Slide 78

Ejemplo – Solución Sub NuevaHoja() ' Usa el método Add del objeto Worksheets     Worksheets.Add  End Sub 

Slide 79

Ejemplo 24 Crear una macro que agregue una nueva hoja de trabajo con nombre asignado.

Slide 80

Ejemplo – Solución Sub NuevaHoja2() ' Además del método Add usa la propiedad Name para hacer las dos cosas     Worksheets.Add.Name = "Hoja de trabajo"  End Sub 

Slide 81

Ejemplo 25 Crear una macro que agregue una nueva hoja de trabajo después de la última y asignarle un nuevo nombre.

Slide 82

Ejemplo – Solución Sub NuevaHoja3() ' Usa el método Add para agregar la hoja nueva ' También After para indicar después de cuál hoja se va a ubicar la hoja ' Al usar Worksheets.Count cuenta todas las hojas del libro, entonces ' coloca la hoja nueva después de la última ' La propiedad Name pone el nombre de la hoja     Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Enero"  End Sub 

Slide 83

Ejemplo 26 Crear una macro que borre una hoja de trabajo.

Slide 84

Ejemplo – Solución Sub BorrarHoja() ' Usa el método Delete para borrar     Worksheets("Hoja1").Delete End Sub  

Slide 85

Ejemplo 27 Crear una macro que seleccione una hoja de trabajo.

Slide 86

Ejemplo – Solución Sub SeleccionarHoja() ' Usa el método Select para seleccionar     Worksheets("Hoja3").Select End Sub 

Slide 87

Ejemplo 28 Crear una macro que mueva la hoja llamada “Hoja1” después de la hoja llamada “Hoja3”.

Slide 88

Ejemplo – Solución Sub MoverHoja() ' Se usa el método Move aplicado al objeto Hoja1 ' Luego After indica la posición donde va a quedar la Hoja1, que es después ' de la hoja 3     Worksheets("Hoja1").Move After:=Worksheets("Hoja3") End Sub

Slide 89

Ejemplo 29 Con base en los datos mostrados en la tabla de la derecha, elabore una macro que seleccione todas las celdas vacías y las rellene con un color amarillo suave.

Slide 90

Ejemplo – Solución Sub CeldasEspeciales() ' El objeto Selection se refiere a un conjunto de celdas seleccionadas ' SpecialCells se refiere a la selección especial, en este caso de celdas vacías     Selection.SpecialCells(xlCellTypeBlanks).Select ' Ahora cambia la propiedad Interior de las celdas con la propiedad ColorIndex     Selection.Interior.ColorIndex = 36 End Sub

Slide 91

Ejemplo 30 En la tabla de la derecha la fila 3 se obtiene como la suma de las filas 1 y 2, y la fila 5 como la fila 3 menos la fila 4. Constrúyala en Excel usando las fórmulas anteriores. Elabore una macro que seleccione todas las celdas con fórmulas y rellénelas con algún color.

Slide 92

Ejemplo – Solución Sub CeldasEspeciales() ' En este caso la selección especial es de las celdas que poseen fórmulas     Selection.SpecialCells(xlCellTypeFormulas).Select ' Pone color de relleno     Selection.Interior.ColorIndex = 36 End Sub

Slide 93

Algunas instrucciones útiles Letra Negrita Selection.Font.Bold = True Letra Cursiva Selection.Font.Italic = True Letra Subrayada Selection.Font.Underline = xlUnderlineStyleSingle Centrar Texto    Selection.HorizontalAlignment = xlCenter    

Slide 94

Algunas instrucciones útiles Alinear a la Derecha    Selection.HorizontalAlignment = xlRight Tipo de Letra(Fuente)    Selection.Font.Name = "AGaramond" Tamaño de Letra(Tamaño de Fuente)    Selection.Font.Size = 15 Copiar Selection.Copy Pegar ActiveSheet.Paste  

Slide 95

Algunas instrucciones útiles Cortar Selection.Cut Ordenar Ascendente Selection.Sort Key1:=Range("A1"), Order1:=xlAscending , Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom Insertar Fila Selection.EntireRow.Insert Eliminar Fila Selection.EntireRow.Delete Insertar Columna Selection.EntireColumn.Insert

Slide 96

Algunas instrucciones útiles Cerrar un libro y guardar cambios: ActiveWorkbook.Close Savechanges:=True Cerrar un libro sin guardar cambios: ActiveWorkbook.Close Savechanges:=False Desplazarse a la última hoja del libro: Sheets(Sheets.Count).Select Desplazarse a la primera hoja del libro: Sheets(1).Select Imprimir un rango de celdas: ActiveWindow.SelectedSheets.PrintOut Copies:=1

Slide 97

Algunas instrucciones útiles Hacer referencia a la hoja que se encuentra en la posición 2 sin importar el nombre de la hoja: Sheets(2).Select Hacer referencia a la hoja de la pestaña anterior a la activa: ActiveSheet.Previous.Select Hacer referencia a la hoja de la pestaña posterior a la activa: ActiveSheet.Next.Select Hacer referencia a una celda de otro libro: Application.Goto Workbooks("Libro1.xlsm").Sheets("Sheet1").Cells(7, 6) Selecciona el rango continuo C2 a D10: Range("C2","D10").Select

Slide 98

Algunas instrucciones útiles Seleccionar toda la columna B: Range("B:B").Select Seleccionar las columnas desde la columna A hasta la columna C: Range("A:C").Select Seleccionar toda la fila 4: Range("4:4").Select Seleccionar todas las filas desde la fila 1 hasta la fila 5: Range("1:5").Select Seleccionar la unión de dos o más rangos especificados: Application.Union(Range("A2:C5"), Range("F6:H12")).Select

Slide 99

Algunas instrucciones útiles Seleccionar desde la celda E2 hasta la última celda con datos hacia abajo: Range("E2").End(xlDown).Select Selecciona y combina las celdas selecciondas: Range("B1:E1").Select Selection.Merge Selecciona y descombina las celdas selecciondas: Range("B1:E1").Select Selection.UnMerge Selecciona un rango donde se encuentra la celda activa: Range("B2").CurrentRegion.Select Hacer referencia a la dirección de la última celda hacia abajo con datos: Range("E2").End(xlDown).Select

Slide 100

Algunas instrucciones útiles Distintas formas de seleccionar un rango de celdas en la hoja activa: ActiveSheet.Range("C2:D10").Select ActiveSheet.Range("C2","D10").Select ActiveSheet.Range(Cells(2, 3), Cells(10, 4)).Select Seleccionar una celda relativa a la celda activa: ActiveCell.Offset(5, -4).Select Seleccionar una celda relativa a otra (que no sea la celda activa): ActiveSheet.Cells(7, 3).Offset(5, 4).Select Seleccionar rangos discontinuos Range("A4:A10,D10,B5:B15").Select

Slide 101

Algunas instrucciones útiles Seleccionar columnas discontinuas: Range("A:A, D:F").Select Seleccionar filas discontinuas: Range("2:2, 4:7").Select Autoajustar el ancho de las columnas: ActiveSheet.Columns.AutoFit Proteger con contraseña una hoja de Excel: Sheets("Hoja1").Protect "123" Desproteger una hoja de Excel: Sheets("Hoja1").Unprotect "123"

Slide 102

Estructura With La estructura With en VBA permite ejecutar un conjunto de instrucciones sin tener que volver a hacer referencia al mismo objeto, esta estructura es entregada con frecuencia por el grabador de macros. La sintaxis de With en VBA es como sigue: With object [ Instrucciones ] End With

Slide 103

Ejemplo 31 Elabore una macro que en la celda A1 introduzca el texto “Hola” y que dé formato negrita.

Slide 104

Ejemplo – Solución Sub WithA1() ' Indicar Cells(1, 1) equivale a Range("A1"), pues Cells(1, 1) indica la celda en ' la fila 1 y columna 1 With Cells(1, 1) .Value = "Hola" ' Cambia la propiedad Value del objeto Cells(1, 1) .Font.Bold = True ' Cambia la propiedad Font como negrita (bold) End With ' Cuando se inicia una estructura With debe terminar con End With End Sub

Slide 105

Ejemplo 32 El archivo EXINT-PA4.xlsx (suministrado a través de la plataforma en la carpeta de archivos para descargar) contiene información sobre las ventas en miles de dólares de una serie de productos para algunos meses. Se desea crear una macro que permita darle en forma automática formato a la tabla de la hoja 1. Específicamente se desea que los encabezados aparezcan en negrita, centrados, con un color de fondo gris. Luego que el texto de toda la tabla tenga bordes en todos sus lados y los números centrados, pero el texto no.

Slide 106

Ejemplo – Solución 1 Sub FormatoTablas1() 'Selecciona los encabezados Range("A3:G3").Select 'Con las celdas seleccionadas: 'Pone negrita Selection.Font.Bold = True 'Centra los datos Selection.HorizontalAlignment = xlCenter 'Pone color gris (el índice 15 es el gris) Selection.Interior.ColorIndex = 15 'Continúa

Slide 107

Ejemplo – Solución 1 'Continuación … 'Selecciona el resto de las celdas Range("A4:G14").Select 'Pone borde continuo y delgado Selection.Borders(xlEdgeLeft).LineStyle = xlContinuos Selection.Borders.Weight = xlThin 'Selecciona números (de celda B a G) Range("B4:G14").Select 'Centra las celdas seleccionadas Selection.HorizontalAlignment = xlCenter End Sub

Slide 108

Ejemplo – Solución 2 Sub FormatoTablas1b() 'Selecciona los encabezados Range("A3:G3").Select 'Con las celdas seleccionadas: 'Para no repetir tantas veces Selection se puede usar el with With Selection 'Pone negrita .Font.Bold = True 'Centra los datos .HorizontalAlignment = xlCenter 'Pone color gris (el índice 15 es el gris) .Interior.ColorIndex = 15 End With 'Continúa

Slide 109

Ejemplo – Solución 2 'Continuación … 'Selecciona el resto de las celdas Range("A4:G14").Select 'Pone borde continuo y delgado Selection.Borders(xlEdgeLeft).LineStyle = xlContinuos Selection.Borders.Weight = xlThin 'Selecciona números (de celda B a G) Range("B4:G14").Select 'Centra las celdas seleccionadas Selection.HorizontalAlignment = xlCenter End Sub

Slide 110

Ejemplo – Solución 3 Sub FormatoTablas1c() 'Pone en negrita los encabezados Range("A3:G3").Font.Bold = True 'Centra los datos Range("A3:G3").HorizontalAlignment = xlCenter 'Pone color gris (el índice 15 es el gris) Range("A3:G3").Interior.ColorIndex = 15 'pone borde continuo y delgado al resto de celdas Range("A4:G14").Borders(xlEdgeLeft).LineStyle = xlContinuos Range("A4:G14").Borders.Weight = xlThin 'Centra las celdas con números (de celda B a G) Range("B4:G14").HorizontalAlignment = xlCenter End Sub

Slide 111

Ejemplo 33 Crear una macro que haga “beep” tres veces, pero que espere un segundo entre cada sonido.

Slide 112

Ejemplo – Solución Sub Sonido() ' La instrucción Beep produce el sonido beep Beep ' Wait hace que se espere una cantidad de tiempo, que va a ser el momento ' actual dado por Now más cero horas, cero minutos y un segundo Application.Wait Now + TimeValue("00:00:01") Beep Application.Wait Now + TimeValue("00:00:01") Beep End Sub

Slide 113

Fórmulas desde VBA en Excel El objeto Range tiene la propiedad Formula, la cual permite insertar una fórmula en una celda de la hoja de Excel. Esta propiedad puede ser útil en ciertas ocasiones, aunque a partir de cierto momento deja de ser funcional. Las fórmulas deben introducirse con sus nombres en ingles, excepto que se emplee la propiedad FormulaLocal. Las propiedades FormulaR1C1 y FormulaR1C1Local son equivalentes a las propiedades Formula y FormulaLocal pero con la diferencia de que utilizan el estilo de referencia R1C1 (estilo de referencia F1C1).

Slide 114

Ejemplo 34 Elabore una macro que inserte la fórmula A1 + B1 en la celda C1.

Slide 115

Ejemplo – Solución Sub SumaCeldas1() ' La propiedad Formula hace que el texto entre comillas se una fórmula ' de la hoja de cálculo, en este caso suma las celdas A1 y B1 Range("C1").Formula = "=A1+B1" End Sub

Slide 116

Ejemplo 35 Inserte, sin usar macros, en la celda C1 la fórmula = A1 + B1. Elabore una macro que muestre la fórmula que se haya en la celda C1. También debe mostrar el valor que se encuentra en esa celda.

Slide 117

Ejemplo – Solución Sub SumaCeldas2() ' Se usa un cuadro de mensaje para mostrar el valor de la celda ' El valor de la celda está dado por Range("C1").Value ' El símbolo & se usa para concatenar ' La instrucción vbCrLf se usa para saltar al siguiente renglón (salto de línea) ' El guión bajo se emplea para que la línea de código no sea muy larga ' Range("C1").Formula muestra la fórmula que hay en la celda C1 MsgBox "Valor de la celda C1: " & Range("C1").Value & vbCrLf & "Fórmula: " _ & Range("C1").Formula End Sub

Slide 118

Ejemplo 36 Elabore una macro que inserte la función SUM en la celda C1 para sumar los valores de las celdas A1 y B1.

Slide 119

Ejemplo – Solución Sub SumaCeldas1() ' En VBA las funciones están en inglés, no en español, por eso al emplear ' la propiedad Formula se usa SUM y no SUMA. ' Observe que la fórmula se escribe toda entre comillas dobles Range("C1").Formula = "=SUM(A1, B1)" End Sub

Slide 120

Ejemplo 37 Elabore una macro que inserte la función SUM en la celda C1 para sumar los valores de las celdas A1 y B1. Utilice la propiedad FormulaLocal.

Slide 121

Ejemplo – Solución Sub SumaCeldas1() ' Si se desea escribir las fórmula en el idioma que tiene instalado Excel, ' entonces se usa la propiedad FormulaLocal, en este caso se usa ' la función SUMA en vez de SUM Range("C1").FormulaLocal = "=SUMA(A1, B1)" End Sub

Slide 122

Ejemplo 38 Elabore una macro que envíe por e-mail el libro de Excel como un adjunto.

Slide 123

Ejemplo - Solución 'Requiere tener instalado y configurado Outlook Sub EnviarMail() 'envía archivo por e-mail 'define variables de objetos Dim OL As Object Dim EmailItem As Object 'asigna valores a las variables de objetos Set OL = CreateObject("Outlook.Application") Set EmailItem = OL.CreateItem(0) 'Continúa

Slide 124

Ejemplo - Solución 'Continuación 'Configura e-mail With EmailItem .Subject = "Se está enviando un mail a " & Range("C8") .Body = “Este e-mail es sobre " & Range("I5") & "." .To = "ggabriell@yahoo.com" .Attachments.Add ActiveWorkbook.FullName .Send End With 'Limpia variables Set OL = Nothing Set EmailItem = Nothing End Sub

Summary: Breve introducción al proceso de desarrollo en Excel b02 - objetos, propiedades, métodos

Tags: excel macros objetos propiedades métodos vba visual basic

URL:
More by this User
Most Viewed