Download - 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