Clase 03
Clase 03
Clase 3
• Instrucciones de Mensajes
• Introducción a la programación estructurada
• Estructuras de programación
Estructuras condicionales:
IF, ELSEIF
SELECT CASE
Instrucciones de mensajes en VBA
Como veremos en los ejemplos posteriores, VBA cuenta con dos
funciones básicas de comunicación con el usuario:
• MsgBox: muestra un mensaje en un cuadro de diálogo, espera que el
usuario haga clic en un botón y devuelve un tipo Integer
correspondiente al botón elegido por el usuario.
La sintaxis de este comando es:
MsgBox( Mensaje, Botones, Título, Archivo de ayuda, contexto)
5
Estructuras Condicionales
Existen muchas situaciones en donde uno desea
ejecutar un (o varios) comando(s) solo si es que
algunas condiciones son satisfechas. Para dicho fin
se hace uso del comando IF.
Versión Corta
If Condición Then
Sentencia1
Sentencia2
…
SentenciaN
End If Ojo es separado 6
Estructuras Condicionales
Versión Larga
If Condición Then
Sentencia 1
Sentencia 2
…
Sentencia N
[ELSE] o [ELSEIF condición THEN]
Sentencia 1
Sentencia 2
…
Sentencia N
End If 7
Ejemplo Condicional Simple
• Entrar una cantidad que representa el precio de algo
por el teclado con la instrucción InputBox y
guardarlo en la celda B12 de la Hoja 1. Si el valor
entrado desde el teclado (y guardado en B12) es
superior a 1000, pedir descuento con otro InputBox
y guardarlo en la casilla C12 de la hoja activa.
• Calcular en D12, el precio de B12 menos el
descuento de C12.
8
Permite separar en dos líneas cuando un renglón es muy largo y que el programa las
interprete como un solo comando
Sub CondicionalSimple()
Sheets ("Hoja1").Select
ActiveSheet.Range(“B12:D12").Value = 0
ActiveSheet.Range(“B12").Value = Val(InputBox _
("Entrar Precio", "Entrar"))
ActiveSheet.Range(“D12").Value = ActiveSheet.Range(“B12") _
.Value - ActiveSheet.Range(“C12").Value
End Sub
9
Ejemplo Condicional Else
• Entrar una cantidad que representa el precio de algo
por el teclado con la instrucción InputBox y
guardarlo en la celda B15 de la Hoja 1.
• Si el valor entrado desde el teclado (y guardado en
B15) es superior a 10000, se aplica un descuento del
20%, si es superior a 1000, se aplica un descuento de
10% y sino se aplica un descuento del 5%. El
descuento (como porcentaje) debe guardarse en la
casilla C15 de la hoja activa.
• Colocar en D15, el descuento total y en E15 el precio
menos el descuento.
10
Sub CondicionalElse()
Dim Precio As Single
Dim Descuento As Single
Precio = 0
Sheets("Hoja1").Select
Precio = Val(InputBox("Entrar el precio", "Entrar"))
If Precio > 10000 Then
Descuento = Precio * (20 / 100)
ActiveSheet.Range(“c15").Value = 0.2
ElseIf Precio > 1000 Then
Descuento = Precio * (10 / 100)
ActiveSheet.Range(“c15").Value = 0.1
Else
Descuento = Precio * (5 / 100)
ActiveSheet.Range(“c15").Value = 0.05
End If
ActiveSheet.Range("b15").Value = Precio
ActiveSheet.Range(“d15").Value = Descuento
ActiveSheet.Range(“e15").Value = Precio – Descuento
End Sub
11
Select Case
En ocasiones se dará el caso que en función del valor
o rango de valores que pueda tener una variable,
una casilla, una expresión, etc. deberán llevarse a
cabo diferentes acciones o grupos de acciones.
Sintaxis:
Select Case Expresión
Case valores :
Instrucciones.
Case valores :
Instrucciones.
...
Case valores:
Instrucciones.
Case Else
Instrucciones en caso que no sean ninguno de los valores anteriores.
End Select 12
Select Case
• Macro que suma, resta, multiplica o divide los
valores de las casillas C12 y C13 dependiendo de si
D13 contiene el signo “+”, “-”, “x” ó “:”.
• El resultado debe aparecer en C14. Si en D13 no hay
ninguno de los signos anteriores, el programa .
• Ejecutar la macro en la hoja2.
13
Sub Ejemplo4()
Sheets(2).Activate
[C12] = InputBox("Introduzca el valor 1", "Valor 1")
[C13] = InputBox("Introduzca el valor 2", "Valor 2")
Select Case [D13]
Case Is = "+"
[C14] = [C12] + [C13]
Case Is = "-"
[C14] = [C12] - [C13]
Case Is = "x"
[C14] = [C12] * [C13]
Case Is = ":"
[C14] = [C12] / [C13]
Case Else
MsgBox ("Faltó poner el signo; hay que reiniciar el proceso")
[D13] = InputBox("Introduzca Signo", "SIGNO")
Call Ejemplo4
End Select
End Sub
14