05 MacrosVBAExcelAvanzado EAA de 11

download 05 MacrosVBAExcelAvanzado EAA de 11

of 18

Transcript of 05 MacrosVBAExcelAvanzado EAA de 11

  • 7/29/2019 05 MacrosVBAExcelAvanzado EAA de 11

    1/18

    Excel Avanzado con VBA 05

    Ing. Enrique Alfaro

  • 7/29/2019 05 MacrosVBAExcelAvanzado EAA de 11

    2/18

    ESTRUCTURAS IF THEN

    Se usa para ejecutar una o ms instrucciones de formacondicional. La sintaxis general es:

    If condicin Then instruc_verdaderas [Else instruc _f alsas]

    Sub Positivos() a = InputBox("Ingrese un nmero") Ifa>0 Then MsgBox "Nmero Positivo"

    End IfEnd Sub

    17/02/2013Ing. Enrique Alfaro

  • 7/29/2019 05 MacrosVBAExcelAvanzado EAA de 11

    3/18

    ESTRUCTURAS IF THEN

    Sub Positivos_Negativos() a = InputBox("Ingrese un nmero") Ifa> 0 Then

    MsgBox "Nmero Positivo" Else MsgBox "Nmero negativo" End ifEnd Sub

    17/02/2013Ing. Enrique Alfaro

  • 7/29/2019 05 MacrosVBAExcelAvanzado EAA de 11

    4/18

    ESTRUCTURAS IFTHENSub Positivos_Negativos_Cero() a = InputBox("Ingrese un nmero") Ifa>0 Then MsgBox "Nmero Positivo" Else

    Ifa

  • 7/29/2019 05 MacrosVBAExcelAvanzado EAA de 11

    5/18

    ESTRUCTURAS IFTHENPINTAR DE ROJO EL VALOR 5 EN UN RANGO DE CELDAS

    CONTIGUAS RECORRIENDO LA COLECCIN "SELECTION" Sub formatearundato() ActiveCell.CurrentRegion.Select If Selection.Count > 1 Then For Each celda In Selection

    ActiveCell.Offset(1, 0).Select With ActiveCell If .Value = 5 Then .Font.Bold = True: .Font.Color = RGB(255, 0, 0)

    End If End With Next celda Else MsgBox "No hay region de datos contiguos" End If End Sub

    17/02/2013Ing. Enrique Alfaro

  • 7/29/2019 05 MacrosVBAExcelAvanzado EAA de 11

    6/18

    ESTRUCTURA SELECT CASE

    La estructuraSelect Case es til para elegir entre tres o ms opciones.Ejemplo:

    Sub Positivos_Negativos_Cero() numero = InputBox("Ingrese un nmero") SelectCase numero

    Case Is > 0 mensaje = "Nmero Positivo" Case Is < 0 mensaje = "Nmero negativo"

    CaseElse mensaje = "Cero End Select MsgBox mensaje

    End Sub

    17/02/2013Ing. Enrique Alfaro

  • 7/29/2019 05 MacrosVBAExcelAvanzado EAA de 11

    7/18

    ESTRUCTURA SELECT CASE

    Sub TasaDescuento() cantidad = InputBox("Introducir valor: ") Select Case cantidad Case "" : msgbox No ingreso nada:Exit Sub Case 0 To 24: Descuento = 0.25 Case 25 To 49: Descuento = 0.20 Case 50 To 74: Descuento = 0.15 Case Is >= 75: Descuento = 0.10 Case else : msgbox No se aceptan nmeros negativos

    Exit Sub End Select MsgBox Tasa de Descuento:" & descuentoEnd SuB

    17/02/2013Ing. Enrique Alfaro

  • 7/29/2019 05 MacrosVBAExcelAvanzado EAA de 11

    8/18

    17/02/2013Ing. Enrique Alfaro

    Estructura SELECT CASE

    17/02/2013I E i Alf

  • 7/29/2019 05 MacrosVBAExcelAvanzado EAA de 11

    9/18

    Estructura SELECT CASE

    1. Mostrar un mensaje de acuerdo a un promedio denota con precisin de 1 decimal.Sub clasificar()SelectCase ActiveCell.Value Case Is >= 18

    condicion = "Excelente" Case 15 To 17.9 condicion = "Bueno" Case 11 To 14.9

    condicion = "Regular" Case Else condicion = "Malo"End Select MsgBox condicionEnd Sub

    17/02/2013Ing. Enrique Alfaro

    17/02/2013I E i Alf

  • 7/29/2019 05 MacrosVBAExcelAvanzado EAA de 11

    10/18

    Estructura SELECT CASE

    2. Validando si se encuentra dentro de unanota permisibleSub Mostrar()nota = ActiveCell.Value

    IfIsEmpty(Selection) Then MsgBox ("La Celda esta vaca" & Chr(13) &

    "Ubquese sobre una nota")Else

    SelectCase nota CaseIs < 8 MsgBox ("Muy Malo")

    contina

    17/02/2013Ing. Enrique Alfaro

    17/02/2013Ing Enrique Alfaro

  • 7/29/2019 05 MacrosVBAExcelAvanzado EAA de 11

    11/18

    Estructura SELECT CASEvieneCase 8 To 10.5 MsgBox ("Malo") Case 10.6 To 14.9 MsgBox ("Regular")

    Case 15 To 17.9 MsgBox ("Bueno") Case 18 To 20 MsgBox ("Excelente")

    CaseElse MsgBox ("La Celda contiene un texto" & Chr(13) &

    "Ubquese sobre una nota") EndSelectEndIfEnd Sub

    17/02/2013Ing. Enrique Alfaro

    17/02/2013Ing Enrique Alfaro

  • 7/29/2019 05 MacrosVBAExcelAvanzado EAA de 11

    12/18

    Ejemplo con Grficos 01

    Crear 2 macros: 1. Graficar, que inserte un grfico estadstico de lneas. 2. Eliminar, que elimine el grfico existente.

    17/02/2013Ing. Enrique Alfaro

    17/02/2013Ing Enrique Alfaro

  • 7/29/2019 05 MacrosVBAExcelAvanzado EAA de 11

    13/18

    Solucin (1/2)Sub creargrafico() cantidad = ActiveCell.CurrentRegion.Count Ifcantidad > 1 Then ActiveSheet.Shapes.AddChart.Select

    ActiveChart.SetSourceData _ Source:=ActiveCell.CurrentRegion ActiveChart.ChartType = xlLine Else

    MsgBox ("Nada seleccionado" & Chr(13) & _ "Ubiquese dentro del rango de datos") End IfEnd Subcontina

    17/02/2013Ing. Enrique Alfaro

    17/02/2013Ing Enrique Alfaro

  • 7/29/2019 05 MacrosVBAExcelAvanzado EAA de 11

    14/18

    Solucin (2/2)

    viene

    Sub eliminar() x = ActiveSheet.ChartObjects.Count

    Ifx > 0 Then ActiveSheet.ChartObjects(1).Activate ActiveChart.Parent.Delete Else MsgBox "No hay graficos" End IfEnd Sub

    17/02/2013Ing. Enrique Alfaro

    17/02/2013Ing Enrique Alfaro

  • 7/29/2019 05 MacrosVBAExcelAvanzado EAA de 11

    15/18

    Ejemplo con Grficos 02 variante

    Crear 2 macros: Graficar: El programa debe pedir un tipo de grfico:

    de linea, o de columna simple o columna 3d. Eliminar que elimine los grficos existentes

    17/02/2013Ing. Enrique Alfaro

    17/02/2013Ing. Enrique Alfaro

  • 7/29/2019 05 MacrosVBAExcelAvanzado EAA de 11

    16/18

    Una posible Solucin (1/3)Sub creargrafico() cantidad = ActiveCell.CurrentRegion.Count Ifcantidad > 1 Then denuevo: tipo = InputBox("Escoja el tipo [L]nea [P]ie [C]olumnas") SelectCase UCase(tipo)

    Case "L" modelo = xlLine Case "C" modelo = xlColumnClustered Case "3d"

    modelo = xl3DColumn CaseElse MsgBox ("No es letra vlida") GoTo denuevo EndSelect

    contina

    17/02/2013Ing. Enrique Alfaro

    17/02/2013Ing. Enrique Alfaro

  • 7/29/2019 05 MacrosVBAExcelAvanzado EAA de 11

    17/18

    Una posible Solucin (2/3)

    vieneActiveSheet.Shapes.AddChart.Select

    ActiveChart.SetSourceData

    Source:=ActiveCell.CurrentRegion

    ActiveChart.ChartType = modelo

    Else

    MsgBox ("Nada seleccionado" & Chr(13) & "Ubiquese

    dentro del rango de datos")

    EndIf

    EndSub

    17/02/2013Ing. Enrique Alfaro

    17/02/2013Ing. Enrique Alfaro

  • 7/29/2019 05 MacrosVBAExcelAvanzado EAA de 11

    18/18

    Una posible Solucin (3/3)

    Sub borrargrafico()Dim gAs ChartObject

    ForEach gIn ActiveSheet.ChartObjects

    g.Delete

    Next

    End Sub

    / /g q