130 likes | 232 Views
Macros Visual Basic. Macros. Cada macro en Visual Basic se compone de lo siguiente: Sub NomMacro () instrucciones End Sub. Estructuras de Control. Decisión If condición Then instrucciones End If.
E N D
Macros • Cada macro en Visual Basic se compone de lo siguiente: SubNomMacro() instrucciones End Sub
Estructuras de Control • Decisión • Ifcondición Then • instrucciones • EndIf Sub test()IfActiveCell.Value = 600 ThenMsgBox "la celda tiene el valor de 600”ActiveCell.Interior.ColorIndex = 3 EndIfEnd Sub
Estructuras de Control • Decisión • Ifcondición Then • instrucciones • Else • instrucciones • EndIf
Estructuras de Control • Iterativa • ForEach valor In objeto • instrucciones • Next valor Sub Convertir() Set Area = Selection For Each Cell In Area Z = Round(Cell / 166.386, 2) Cell.Value = Z Cell.NumberFormat = "#,##0.00" Next Cell End Sub
Estructuras de control • Select Case GradeCase Is >= 90LetterGrade = "A"Case ElseLetterGrade = "B" • EndSelect • Do While condición • Instrucciones • Loop • Fori = 1 To condiciónSalida • Instrucciones • Next i • Do instruccionesLoop Until condición
Referencias a Libros de excel • Workbook: Libro de trabajo. • ActiveWorkbook : Libro activoWorkbooks(2) : El segundo libro abierto • Workbooks("Libro1.xls") : Llamada al libro de nombre Libro1 • Workbooks(milibro) *-Si el nombre del libro se encuentra en una variable, NO lleva comillas Previamente asignamos nombre, por ej: milibro=ActiveWorkbook.name
Ejemplo Ref Libros Sub activaWbk() 'con esta linea se evita el mensaje de error del excel en caso no exista ese libro de Excel On Error Resume Next Workbooks("LibroM2").Activate End Sub
Referencia a Hojas • WorkSheet: Hoja de trabajo • ActiveSheet : Hoja activa • Sheets("Enero") : Hoja de nombre 'Enero' • Sheets(3) : Número de hoja según el orden de las pestañas. Sub Cambiardehoja() ‘Se cambia a la hoja 2 Worksheets(2).Activate End Sub
Referencia a Rangos o Celdas • Rangeo Cells : rango o celda • Activecell : la celda activaRange("A2") : la celda A2Cells(2,1) : la celda A2 . • *-Nótese que mientras en Range se introduce la celda en el orden Col,Fila, en Cells es a la inversa: Cells(fila,col) • Range("A5:B10") : rango de celdas desde A5 hasta B10 inclusiveRange("E:E") : columna ERange("2:2") : fila 2 • [A3] : la celda A3 • Range("A" & fila) : celda de la col A y fila según valor de variable
Ejemplo Ref a Celdas Sub macro_de_principiante() 'Escribimos algo en la celda A1 Range("A1") = "Este es mi primer macro en excel codificada en Visual Basic." 'Imprimir la hoja de excel con una sola copia ActiveWindow.SelectedSheets.PrintOut Copies:=1 End Sub
Uso de selección y formato Sub Convertir() Set Area = Selection For Each Cell In Area Z = Round(Cell / 166.386, 2) Cell.Value = Z Cell.NumberFormat = "#,##0.00" Next Cell End Sub
Uso de selección y formato Sub escribeLista() For i = 1 To 10 Step 1 Cells(i, 1) = i Next i End Sub