0% encontró este documento útil (0 votos)
187 vistas29 páginas

Estructuras Condicionales y Repetitivas en VBA

El documento describe diferentes conceptos relacionados con la programación en Visual Basic para Aplicaciones (VBA) en Excel, incluyendo la inserción de código, declaración de variables, tipos de variables, procedimientos, argumentos opcionales, estructuras condicionales IF-THEN y IF-THEN-ELSE. También presenta 6 ejercicios prácticos para aplicar estos conceptos mediante la creación de macros en Excel.

Cargado por

cristian romero
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
187 vistas29 páginas

Estructuras Condicionales y Repetitivas en VBA

El documento describe diferentes conceptos relacionados con la programación en Visual Basic para Aplicaciones (VBA) en Excel, incluyendo la inserción de código, declaración de variables, tipos de variables, procedimientos, argumentos opcionales, estructuras condicionales IF-THEN y IF-THEN-ELSE. También presenta 6 ejercicios prácticos para aplicar estos conceptos mediante la creación de macros en Excel.

Cargado por

cristian romero
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

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 -[Link] y + [Link]
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 [Link]
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:

[Link].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

[Link]= “=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 = [Link] ‘ [Link]

WorkSheets(NUM).Activate

Range(“A5”).Select

[Link]= “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

[Link]= 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

[Link]= 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 = [Link]

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

Resultado = boliviano / Dolar

[Link]= Resultado

[Link] = "[$$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 = [Link]

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

[Link] = “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 [Link] <> “”


Contador = Contador + 1
[Link](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

También podría gustarte