Вы находитесь на странице: 1из 29

7/29/2018

Estructuras Condicionales y
repetitivas

1
7/29/2018

Inserción de Código

 Definir una Macro  Inserción de Comentarios


 Utilizar el apóstrofe ( ’ ) antes
Sub… de una línea de texto
 Generalmente de color verde
…….
 Al inicio de una línea o
……. después de una instrucción.
…….
Ejemplo:
End Sub
’ Mi Comentario

2
7/29/2018

Declaración de Variables

 Solo se pueden definir dentro de un procedimiento o dentro de un


módulo o dentro del programa entero (Variable Global).

 Su nombre debe empezar con una letra, y máximo de 256


caracteres y no debe contener espacios en blanco, puntos ni
caracteres especiales.

 Se recomienda declarar todas las variables antes de ser usadas.


La instrucción OPTION EXPLICIT en módulos vacíos indica que
es necesario definir las variables antes de usarlas

 No son Case-Sensitive (Es Indistinto las mayúsculas y las


minúsculas) Ej. Alto = ALTO = aLtO = Alto = AlTo

3
7/29/2018

Tipo de Variables
TIPO DESCRIPCIÓN
Byte Número entre 0 y 255
Integer Número entre -32768 y +32767
Long Número entre -2.147.483.648 y + 2.147.483.647
Currency Número con 15 posiciones decimales antes y después de la
coma
Double Tiene precisión de 16 dígitos decimales
Single Tiene precisión de 8 dígitos decimales
Date Fechas y horas desde 1/01/1900 hasta 31/12/9999 y hora 00:00
a 23:59:59
String Una cadena de caracteres limitado solo por la cantidad de RAM
Object Almacena un puntero al objeto
Variant Tipo por defecto

4
7/29/2018

Escribir instrucciones:

 Las instrucciones muy largas pueden ser divididas en


varias líneas, usando el guión bajo. ( _ )

Ejemplo:

Selection.Sort.Key1:=Range(“A3”), Order1:= xlAscending _


Header:=xlGuess; OrderCustom:=1; MatchCase:=False, _
Orientation:=xpTopBottom.

5
7/29/2018

Procedimientos
 Existen 2 tipos:
 Los que NO retornan Valor  Sub name()
 Los que retornan Valor …
 No retornan Valor: Realiza  End Sub
ciertas acciones: Grabar el
libro actual, pero no retorna un
valor. Define un subprograma o Macro
 Los programas se distinguen
porque su código de programa
es pequeño, divido en Sub saludo(parametro1,
unidades separadas parametro2, etc.)
(Procedimientos).
 Estas unidades pequeñas
pueden ser llamadas por otras.
Msgbox “Hola a todos”
 Puede pasarse parámetros
entre ellos. End Sub

6
7/29/2018

Procedimientos
continuación…
 Los que retorna valor; se
denominan FUNCIONES
 Como las funciones de EXCEL
 Siempre se usan escribiendo el
signo = delante del nombre:
Function MiSuma(dato1, dato2)

Function nombre( arg1, arg2, etc.) MiSuma=dato1 + dato2


….
End Function End Function

7
7/29/2018

Argumentos optativos

 En las funciones se puede manejar argumentos en solo


cuando sea necesario.
 Se declara a los argumentos usando la sentencia:
OPTIONAL antes del nombre del parámetro:

Function Prueba(Optional dato1)

If Not Ismissing(dato1) then


Msgbox a
End If
End Function

8
7/29/2018

Demostración:
Escribir una Macro en el Editor de VB que use
variables y muestre el resultado en la
ventana INMEDIATO

Definir una macro con el nombre:


Area
Insertar la descripción como un
Comentario.
Definir tres variables
Alto
Ancho
Area
Calcular el área
Imprimir el resultado en la
ventana INMEDIATO
Ejecutar

9
7/29/2018

Ejercicio 1
Activar la segunda hoja del libro actual e insertar en la
celda A10 la fecha actual.

SUB CAMBIARHOJA

WorkSheets(2).Activate

Range(“A10”).Select

ActiveCell.Value= “=TODAY”

END SUB

10
7/29/2018

Ejercicio 2
Contar cuantas hojas tiene el libro Actual y escribir el resultado en la ultima
Hoja del libro, en la celda A5 el texto; “Este libro tiene en total: ” num
“hojas”.

SUB CUENTAHOJAS

Dim NUM as byte

Num = WorkSheets.Count ‘ Sheets.Count

WorkSheets(NUM).Activate

Range(“A5”).Select

ActiveCell.Value= “Este libro tiene en total” & NUM & “ hojas”

END SUB

11
7/29/2018

Ejercicio 3
 Introducir un valor numérico e insertarlo en la segunda hoja en la
celda E3 y luego obtener ese valor y mostrarlo en un cuadro de
mensaje.
SUB INSERTAVALOR

Dim VALOR as byte

VALOR = INPUTBOX(“Introduzca un Valor”)

WorkSheets(2).Activate ‘Sheets(2).Activate

Range(“E3”).Select

ActiveCell.Value= VALOR

MSGBOX “Usted ha introducido: ” & VALOR


END SUB

12
7/29/2018

Ejercicio 4
 Que el usuario introduzca el tipo de cambio del dolar en
la hoja1, celda B3.
SUB TIPO_CAMBIO

Dim tc as double

tc = INPUTBOX(“Introduzca el tipo de cambio del día”)

WorkSheets(1).Activate

Range(“B3”).Select

ActiveCell.Value= tc

MSGBOX “Usted ha introducido: ” & tc


END SUB

13
7/29/2018

Ejercicio 5
 Crear la macro que convierta una cantidad de Bolivianos en Dólares a
través de un botón en la barra de herramientas. El tipo de Cambio actual
esta en la Hoja 1, celda B3

SUB CONVERTIR_DOLAR

Dim boliviano, dolar, resultado as double

boliviano = ActiveCell.Value

dolar = Worksheets(1).Range("B3").Value

Resultado = boliviano / Dolar

ActiveCell.Value= Resultado

Selection.NumberFormat = "[$$us ]#,###.00"


END SUB

14
7/29/2018

Ejercicio 6
 Crear la macro que convierta una cantidad de Bolivianos en Dólares a través de un
botón en la barra de herramientas y muestre el resultado en una Ventana de
Mensaje. El tipo de Cambio actual esta en la Hoja 1, celda B3

SUB MOSTRAR_DOLAR

Dim boliviano, dolar, resultado as double

boliviano = ActiveCell.Value

dolar = Worksheets(1).Range("B3").Value

Resultado = boliviano / dolar

MsgBox (" El Equivalente es de BS: " & boliviano &


vbCrLf & "es $us: " & Valor)

END SUB

15
7/29/2018

Estructuras de Control …IF – THEN - ELSE


 Condicionales:
IF-THEN:
 Ejecuta una instrucción en
base al resultado de evaluar
una condición. IF condición THEN
Instrucciones
 Ej. Si su edad es mayor a 18 Instrucciones
entonces mostrar la frase: END IF
BIENVENIDO A LA REALIDAD !!,
sino, mostrar la frase “FALTA
POCO”.
IF-THEN-ELSE:
 Si se compra más de 20 unidades
de un producto hacer un
descuento del 5%, sobre el total a IF condición THEN
pagar. Si es menor entonces Instrucciones
preguntar si desea comprar más. ELSE
Instrucciones
END IF

16
7/29/2018

Estructuras de Control: IF – THEN - ELSEIF


 Se puede realizar más de IF-THEN – ELSEIF
una evaluación.
cantidad = InputBox("Inserte Cantidad“)
IF cantidad > 100 THEN
 Ej. Evaluar si la cantidad de Msgbox “La cantidad es mayor que
un pedido es mayor a 100 o 100”
si la cantidad es mayor que ELSEIF cantidad > 200 THEN
200 o si es mayor a 300, Msgbox “La cantidad es mayor
caso contrario mostrar el que 200”
mensaje que diga: POCA
ELSEIF cantidad > 300 THEN
CANTIDAD. Msgbox “La cantidad es mayor
que 300”

ELSE

Msgbox cantidad & “ es poca


cantidad”

END IF

17
7/29/2018

Select Case …End Select


 Una Alternativa a la
instrucción ELSEIF
SELECT:
 Permite realizar
comparaciones con SELECT CASE criterio
varios valores diferentes, CASE1
pero para una misma Instrucciones
CASE2
variable. Instrucciones
 Ejecuta un grupo de CASE2
Instrucciones
instrucciones CASE ELSE
dependiendo del valor Instrucciones
de la expresión.
END CASE
 Recomendado cuando
existen muchas
condiciones.

18
7/29/2018

Ejemplo A) SELECT CASE…END CASE


 Emitir un mensaje de acuerdo al día de la semana.
DIA = DIASEM(DATE(),2) ‘1=Lunes a 7= Domingo

SELET CASE DÍA FUNCION DIASEM()


CASE 1
MSGBOX “HOY ES LUNES” DIASEM(FECHA, TIPO)
CASE 2
MSGBOX “HOY ES MARTES”
CASE 3 Tipo 1:
MSGBOX “HOY ES MIERCOLES” 1 (domingo) al 7(sábado)
CASE 4
MSGBOX “HOY ES JUEVES” Tipo 2:
CASE 5 1 (lunes) al 7 (domingo)
MSGBOX “HOY ES VIERNES”
CASE 6
MSGBOX “HOY ES SABADO” Tipo 3:
CASE 7 0 (lunes) al 6 (sábado)
MSGBOX “HOY ES DOMINGO”
END CASE

19
7/29/2018

Ejemplo B) SELECT CASE…END CASE


 En base al Rendimiento de un empleado, obtener su bonificación

Salario = 2000
Rendimiento = InputBox(“Introduzca Rendimiento”)

SELECT CASE rendimiento


Case 1
Bonificación = salario * 0.1
Case 2, 3
Bonificación = salario * 0.09
Case 4 To 6
Bonificación = salario * 0.07
Case Is > 8
Bonificación = 100
Case Else
Bonificación = 0
END SELECT

20
7/29/2018

Estructura repetitiva: FOR…TO…NEXT


 Permite realizar operaciones de forma repetitiva

FOR-TO- NEXT:

FOR contador = inicio TO fin [STEP incremento]

Instrucciones

[EXIT FOR ]

Instrucciones

NEXT contador

Cuando se evalúa una condición y se desea


salir del CICLO

21
7/29/2018

Ejemplo: FOR … TO … NEXT


 Escribir 7 veces: “Curso Programación de Macros EXCEL”, a partir
de la celda A1

DIM Contador as byte ‘Inicializa el valor que usa el FOR


celda = “A”

FOR contador = 1 TO 7 STEP 1


celda = “A” & CStr(contador)

Range(celda).Select

ActiveCell.Value = “Curso Programación de Macros


EXCEL”

NEXT

22
7/29/2018

While …Wend
 Permite ejecutar instrucciones mientras una condición
sea VERDADERA.
“Se ejecuta CERO o más veces”
El ciclo While

WHILE condicion

Instrucciones

Instrucciones

WEND

23
7/29/2018

Ejemplo: While …Wend


 De una lista de datos, encontrar el final de la lista

Range(“A2”).Select
Contador = 0

WHILE ActiveCell.Value <> “”


Contador = Contador + 1
ActiveCell.Offset(1,0).Range(“A1”).Select

WEND

MsgBox (En total se tiene: “ & contador & “ elementos”

24
7/29/2018

Do … Loop
 Repite las instrucciones un número de veces hasta que una
condición sea VERDADERA.
 Dos formas de comprobar la condición: ANTES y DESPUÉS de
entrar al BLOQUE

El ciclo DO Loop El ciclo DO Loop

DO [WHILE | UNTIL] condicion DO

•Instrucciones •Instrucciones

Exit DO Exit DO

Instrucciones Instrucciones

LOOP LOOP [WHILE | UNTIL] condicion

“Se ejecuta CERO o más veces” “Se ejecuta UNA o más veces”

25
7/29/2018

Ejercicio A) Do Loop - While


 Contabilizar las veces que se ingresa al bloque DO
MIENTRAS miNum es mayor que 10
Contador = 0
miNum = 20

DO While miNum > 10


miNum = miNum – 1
Contador = Contador + 1
LOOP

• MsgBox (“El bucle se ha repetido “ & contador & “ veces”

26
7/29/2018

Ejercicio B) Do Loop - While


 Contabilizar las veces que se ingresa al bloque DO
MIENTRAS miNum es mayor que 10
Contador = 0
miNum = 20

DO
miNum = miNum – 1
Contador = Contador + 1

LOOP While miNum > 10

• MsgBox (“El bucle se ha repetido “ & contador & “ veces”

27
7/29/2018

Ejercicio C) Do Loop - Until


 Contabilizar las veces que se ingresa al bloque DO
HASTA que miNum sea igual a 10
Contador = 0
miNum = 20

DO UNTIL miNum = 10
miNum = miNum – 1
Contador = Contador + 1
LOOP

• MsgBox (“El bucle se ha repetido “ & contador & “ veces”

28
7/29/2018

Ejercicio D) Do Loop
 Contabilizar las veces que se ingresa al bloque DO
HASTA que miNum sea igual a 10
Contador = 0
miNum = 1

DO
miNum = miNum + 1
Contador = Contador + 1

LOOP UNTIL miNum = 10

• MsgBox (“El bucle se ha repetido “ & contador & “ veces”

29

Вам также может понравиться