Está en la página 1de 14

Macros y Programación

con VBA Curso de Microsoft Excel Nivel Avanzado

QUINTA PRÁCTICA

✓ Definir procedimientos, funciones y variables


OBJETIVOS ✓ Aplicar instrucciones de mensajes de entrada y salida
✓ Aplicar programación estructurada.

FUNDAMENTOS DE PROGRAMACIÓN
Como se indicó anteriormente, la programación en VBA consiste en escribir instrucciones que deben estar
almacenados en un módulo estándar. Para mayores detalles, remítase al material complementario, páginas 38 a
la página 60. Pero, brevemente se hará un resumen.
La codificación de instrucciones VBA se hará en procedimientos y/o funciones contenidos en un módulo o en
controles de objetos aplicados en formularios.
PROCEDIMIENTOS
Un procedimiento es un conjunto de instrucciones que tienen en común realizar un proceso complejo en un
conjunto de tareas más simples. Existen dos tipos procedimiento: procedimientos SUB y procedimientos
FUNCTION.
➢ Procedimientos SUB
Hay dos tipos: Sub generales y Sub asociados a aventos

➢ Procedimientos Function
Llamados generalmente funciones y muchas veces definidas o creadas por el usuario, devuelven un
valor que resulta de un cálculo. El valor se devuelve a través del nombre de la función. Debe tener en
cuenta que Visual Basic incluye numerosas funciones integradas como: day, week, format, etc.

VARIABLES
En ambos tipos de procedimientos indicados anteriormente, se utilizan variables que contienen datos que
representan a distintos tipos de datos como: texto, número, fechas, valores lógicos, etc. De modo que los tipos
de datos deben ser representados mediante variables que VBA lo soporte.
Entre la diversidad de variables tenemos: byte, boolean, integer, long, single, doublé, date, string, variant, etc.
Declaración de variables
Toda variable debe tener un nombre indicando su tipo. Si no se indica el tipo entonces quiere decir que es una
variable Variant, es decir que el nombre de la variable se adecúa al tipo de dato escrito.
Ejemplo 1
Nota = 12 Nota, es una variable de tipo variant por que no está definido explícitamente.
Importe = 2000 Importe, es una variable de tipo variant, por que no está definido explícitamente.
Nombre = “José Carlos” Nombre, es una variable de tipo variant
Ejemplo 2:
Dim V As Integer V, es una variable tipo de dato definido como entero
Importe As Double Importe, es una variable de tipo Doble
Nombre As String Nombre es un variable de tipo cadena o texto

AMBITO DE LAS VARIABLES


Variables de ámbito local. Las variables se usan y funcionan en un solo procedimiento
Dim i, j, k as integer (k es tipo entero; i, j son variables de tipo variant)
Variables de ámbito modular. Las variables deben escribirse fuera del primer procedimiento y funcionan para
todos los procedimientos sólo de ese módulo.
Variables de ámbito General. Son aquellas variables que funcionan en todos los procedimientos de todos los
módulos en un proyecto VBA. Debe declarar la variable con la palabra clave: Public.
Public ValorActual As Long

Instituto de Informática y Telecomunicaciones Pág. ~ 1 ~ Lic. Manuel Mendoza M.


Telf. 52 - 583000
Macros y Programación
con VBA Curso de Microsoft Excel Nivel Avanzado

FUNCIONES DE MENSAJES
LA FUNCION MsgBox
Ofrece una sencilla forma de mostrar mensajes o resultados cuando se está ejecutando código VBA.
Sintaxis:
MsgBox(mensaje [, botones] [, título] [, archivo_de_ayuda, contexto])

Ejemplos:
1. MsgBox WorkBooks(“Libro1”).Name
2. MsgBox "Desea continuar", vbYesNo + vbQuestion, "Elija..."

LA FUNCION InputBox
Muestra un mensaje en una ventana de diálogo, espera que el usuario escriba un texto o haga clic en un botón
y devuelve un valor de tipo String con el contenido del cuadro de texto.

Sintaxis: Valor = InputBox(Mensaje)

Ejemplo: crear la siguiente ventana de entrada de datos

Debe escribir el siguiente código: N1 = InputBox ("Ingrese Nota1 del Alumno Carlos","Evaluación”)
Para visualizar el resultado escriba : ? N1

PROGRAMACIÓN ESTRUCTURADA
La premisa básica de la programación estructurada es que una rutina o segmento de código debería tener un
solo punto de entrada y un solo punto de salida.
Es decir, el código debería ser una unidad independiente y el control del programa no debería entrar o salir desde
cualquier parte de esa unidad. Como resultado, la programación estructurada excluye la instrucción GoTo.
Cuando se escribe un código estructurado, el programa progresa de manera ordenada y fácil de seguir,
lográndose leer, entender y modificar la codificación más fácilmente.
VBA es un lenguaje de programación estructurado y es compatible con las construcciones de código modular,
ofreciéndonos construcciones como: If-then Else, Select Case, bucles For Next, Do Until y Do While.

TIPOS DE ESTRUCTURAS
Existen varios tipos de programación estructurada, entre las cuales tenemos:

Estructuras condicionales
➢ Estructura condicional simple, con la sentencia: If…Then
➢ Estructura condicional doble, con la sentencia: If…Then…Else
➢ Estructura condicional doblemente encadenada: If…Then…ElseIf
➢ Estructuras de selección múltiple con la sentencia: Select-Case

Estructura Repetitivas
➢ Estructura repetitiva, con la sentencia: For…Next
➢ Estructura repetitiva anidada con la sentencia: For…Next dentro de For…Next
➢ Estructura repetitiva con la sentencia: Do While…Loop,
➢ Estructura repetitiva con la sentencia: Do Until…Loop

Instituto de Informática y Telecomunicaciones Pág. ~ 2 ~ Lic. Manuel Mendoza M.


Telf. 52 - 583000
Macros y Programación
con VBA Curso de Microsoft Excel Nivel Avanzado

ACTIVIDADES PRACTICAS
I. VISUALIZANDO FUNCIONES INTEGRADAS EN VBA DESDE LA VENTANA INMEDIATO
FUNCIÓN VENTANA INMEDIATO RESULTADO
ASC Num = Asc(“B”) : ? num 66
Devuelve el código ASCII de
un determinado caracter
Chr Letra = Chr(209) : ? letra Ñ
Función inversa al anterior
Devuelve el carácter
Format Monto = 80 El Monto es $ 80.00
Aplica un modelo formato Txtm = “El monto es $ “ & Format(Monto,”0.00”
según tipo de datos. ? Txtm

II. VISUALIZANDO FUNCIONES INTEGRADAS CON LA FUNCION MSGBOX


FUNCIÓN VENTANA INMEDIATO RESULTADO
Currency MsgBox Format(monto, “currency”)
Da formato monetario

Standard MsgBox Format(monto, "standard")


Para valores simples a 2
decimales

Percent IGV = 0.18


Para valores de tipo MsgBox Format(IGV, “Percent”)
porcentaje

Long Date d = “20/03/2012”


Da formato a una fecha MsgBox Format(d, “Long Date”)
completa

LCase texto=”PROGRAMACIÓN VBA” El texto en


Convierte una cadena de MsgBox “El texto en minúsculas es: “ & LCase(Texto) minúsculas es:
texto en minúsculas programación vba
Ucase texto=”programación vba” El texto en
Convierte una cadena de MsgBox “El texto en mayúsculas es: “ & UCase(Texto) mayúsculas es:
texto en mayúsculas PROGRAMACIÓN VBA
Len texto=”programación vba” La cantidad de
Mide la longitud de la MsgBox “La cantidad de caracteres es: “ & Len(Texto) caracteres es: 16
cadena de texto
Left texto=”programación vba” Las 4 primeras letras
Captura letras del lado MsgBox “Las 4 primeras letras son: “ & Left(Texto,4) son: Prog
izquierdo de un texto
Right texto=”programación” Las 4 últimas letras
Obtiene letras del lado der. MsgBox “Las 4 últimas letras son: “ & Right(Texto,4) son: ción
LTrim
RTrim
Trim

Instituto de Informática y Telecomunicaciones Pág. ~ 3 ~ Lic. Manuel Mendoza M.


Telf. 52 - 583000
Macros y Programación
con VBA Curso de Microsoft Excel Nivel Avanzado

CREACION DE PROCEDIMIENTOS
1. Proceda a abrir un nuevo libro y poner por nombre: Procedimientos.xlsm.
2. Pulse ALT + F11, menú Insertar, clic en Modulo.
3. Doble clic en Módulo1

I. CUADROS DE MENSAJES SIMPLES Y PERSONALIZADOS


1. Mostrar saludo con fecha (El cursor debe estar en medio de las líneas de la codificación y recién
podrá ejecutar los procedimientos pulsando F5 o pulsando el botón Ejecutar)
Procedimiento Resultado
Sub saludo()
MsgBox "Bienvenido, hoy es " & Date & vbNewLine & Time
End Sub

2. Mostrar un simple mensaje


Procedimiento Resultado
Sub mensaje1()
MsgBox "Bienvenidos a ICEL-UPT", , "Saludo"
End Sub

3. Mostrar un mensaje en dos o más líneas. Aplicar las constantes vbNewLine


Procedimiento Resultado
Sub Mensaje2()
' Dejar un espacio antes del subguión que indica que
' la instrucción está en una sóla línea
' No confundir con vbNewLine
MsgBox "No existe el producto X " + vbNewLine + _
"Registre dicho producto para continuar", , _
"Búsqueda por línea"
End Sub
Guardar el libro.
4. Crear un procedimientos que muestre 2 botones: Si y No.
Procedimiento Resultado
Sub Mensaje3()
MsgBox "Esta acción es irreversible" & vbNewLine & "¿Desea continuar",
_
vbYesNo, "Confirme la ejecución"
End Sub

5. Crear un procedimientos que muestre un botón de aceptación y otro de error crítico


Procedimiento Resultado
Sub Mensaje4()
MsgBox "Código incorrecto", vbOKOnly + vbCritical, "Error"
End Sub

Instituto de Informática y Telecomunicaciones Pág. ~ 4 ~ Lic. Manuel Mendoza M.


Telf. 52 - 583000
Macros y Programación
con VBA Curso de Microsoft Excel Nivel Avanzado

TAREA
Proceda a escribir los procedimientos correspondientes para mostrar los siguientes mensajes

II. CUADROS DE INGRESO DE DATOS


1. Ingrese un dato tipo nota de algún curso
Procedimiento Resultado
Sub Entrada1()
InputBox "Ingrese Nota: ", "Registro de notas"
End Sub

2. Si se desea utilizar un valor ingresado a través de inputbox debe trabajarlo como función y asignarle
a una variable. Se desea buscar el código de un alumno; debe ingresar su código.
Procedimiento Resultado
Sub entrada2()
codigo = InputBox("Código del alumno a buscar", _
"Búsqueda alumno")
MsgBox "Se está buscando el código >>>> " + codigo
End Sub

3. Validando el ingreso de un valor, es decir se cancela o cierra sin ingresar valor alguno, la variable
tendrá un valor vacío
Procedimiento Resultado
Sub entrada3()
unidades = InputBox("Ingrese las unidades a procesar",
_ "Registro")
If unidades = "" Then
MsgBox "Error"
Else
MsgBox "Procesando... " + unidades & " unidades"
End If
End Sub
Ejecutando y cancelado, dará como resultado Ejecutando y dando valor: 15 y Aceptar.
la imagen de abajo

TAREA
Modifique el último procedimiento para que al cancelar o aceptar, los resultados se muestren así:

Instituto de Informática y Telecomunicaciones Pág. ~ 5 ~ Lic. Manuel Mendoza M.


Telf. 52 - 583000
Macros y Programación
con VBA Curso de Microsoft Excel Nivel Avanzado

ESTRUCTURAS CONDICIONALES
ESTRUCTURA CONDICIONAL SIMPLE CON IF… THEN Verdadero Falso
Este tipo de estructura, evalúa una condición lógica y en caso Condición
resulte verdadera efectúa la acción. En caso que la condición
resulte falsa, continúa con la siguiente instrucción
Formatos: Bloque de
1. If Condición Then acción Instrucciones A

2. If Condición Then
Acción1
Acción2
End if
EJERCICIOS
1. Ingrese una edad mayor a 17 y visualice el mensaje : “Mayor de Edad
Sub CondicionIf_1()
Dim Edad As Integer
Edad = 20
If Edad > 17 Then Mensaje = "Mayor de Edad"
MsgBox Mensaje
End Sub

2. Ingrese un valor diferente de cero y muestre el mensaje: “Número positivo”


Sub CondicionIf_2()
valor = InputBox("Ingrese un número")
If valor > 0 Then
MsgBox "Número positivo"
End If
End Sub

ESTRUCTURA CONDICIONAL DOBLE CON IF… THEN…ELSE


Evalúa una condición lógica y en caso que resulte verdadera efectúa la acción del bloque1, de lo contrario efectúa
la acción del bloque2
Formato:
If Condición Then
Accion1

AccionN
Else
Accion1
….
Accion2
1. Se desea visualizar el mensaje de: “Mayor de edad” o “Menor de edad”, según la edad ingresada.
Sub CondicionIf_3()
' estructura de selección doble
Edad = InputBox("Ingrese la Edad")
If Edad > 17 Then
Mensaje = "Mayor de edad"
MsgBox Mensaje
Else
Mensaje = "Menor de edad"
MsgBox Mensaje
End If
End Sub

Instituto de Informática y Telecomunicaciones Pág. ~ 6 ~ Lic. Manuel Mendoza M.


Telf. 52 - 583000
Macros y Programación
con VBA Curso de Microsoft Excel Nivel Avanzado

ESTRUCTURA CONDICIONAL DOBLEMENTE ENCADENADA CON IF… THEN…ELSEIF


Funciona como la función de SI de Excel, es decir se puede aplicar If dentro de otro if
Formato:
If Condicion1 Then
‘Acciones bloque1
Elseif Condición2 Then
‘Acciones bloque2
Else
‘Acciones falsas Bloque3
End if
Ejemplo:
Se tiene trabajadores cuyos códigos son de categorías A, B y C. Se desea visualizar un mensaje según la
correspondiente categoría al ingresarlo como dato de entrada desde teclado
Sub CondicionIf_4()
' estructura de selección doblemente encadenada
Categoría = InputBox("Ingrese la Categoría del trabajador: ")
If UCase(Categoría) = "A" Then
Mensaje = "Categoría A"
MsgBox Mensaje
ElseIf UCase(Categoría) = "B" Then
Mensaje = "Categoría B"
MsgBox Mensaje
Else
Mensaje = "Categoría C"
MsgBox Mensaje
End If
End Sub

APLICANDO ESTRUCTURAS CONDICIONALES A LA HOJA DE CÁLCULO


1. En un nuevo libro y en la hoja activa Hoja1 ponga los encabezados: Precio, Descuento y Neto en A1, B1 y C1
respectivamente. Se desea ingresar a través de inputbox una cantidad que represente el precio y guardarlo
en la celda A2 de la hoja activa. Si el valor ingresado por teclado es superior a 1000, realizar un descuento
que debe ser ingresado también a través de InputBox y guardarlo en la celda B2 de la hoja activa. En celda
C2 debe reflejar el valor neto.
Ejecute el procedimiento varias veces,
Sub Condicion1_HC()
' Aplicar sentencias if en un Hoja de Cálculo HC probando ingresar valores menores y
Range("A2").Activate mayores a 1000. Vea el resultado de la
Selection.EntireRow.Insert imagen de abajo con algunos datos
' Poner celdas donde se guardar los valores a 0 numéricos.
Range("A2").Value = 0 En esta hoja puede poner un botón de
Range("B2").Value = 0 comando y asignarle este
Range("C2").Value = 0 procedimiento.
Range("A2").Value = Val(InputBox("Ingrese el Precio", "Ingreso")) Guardar el libro con el nombre de: Prac5
' Si el valor de la celda A2 es mayor que 1000, entonces pedir descuento
Condicional1.xlsm
If Range("A2").Value > 1000 Then
Range("B2").Value = Val(InputBox("Ingrese el Descuento", "Ingreso"))
End If 2. En un nuevo libro, realizar el
Range("C2").Value = Range("A2") - Range("B2") mismo ejercicio anterior pero utilizando
End Sub variables.

Instituto de Informática y Telecomunicaciones Pág. ~ 7 ~ Lic. Manuel Mendoza M.


Telf. 52 - 583000
Macros y Programación
con VBA Curso de Microsoft Excel Nivel Avanzado

Option Explicit Guardar el libro con el nombre de:


Sub Condicion2_HC()
Prac5 Condicional2.xlsm
' Aplicar sentencias if en un Hoja de Cálculo HC
Range("A2").Activate
Selection.EntireRow.Insert
Dim Precio As Integer
Dim Descuento As Integer
Dim Neto As Integer
Precio = 0
Descuento = 0
Neto = 0
Precio = Val(InputBox("Ingresar el precio", "Ingreso"))
'Si el valor de la variable precio es mayor que 1000, entonces pedir descuento
If Precio > 1000 Then
Descuento = Val(InputBox("Ingresar Descuento", "Ingreso"))
Neto = Precio - Descuento
End If
Range("A2").Value = Precio
Range("B2").Value = Descuento
Range("C2").Value = Neto
End Sub
3. En un nuevo libro y en la hoja activa Hoja1, realizar el ingreso de datos mediante variables. Debe ingresar el
precio por teclado y guardarlo en la celda A2 de la hoja activa. Si el valor ingresado es mayor a 1000 realizar
un descuento del 10%, caso contrario, realizar un descuento del 5%. El porcentaje debe ser guardado en la
celda B2 de la hoja activa. En la celda C2 debe ser el valor del monto del porcentaje y en la celda D2 el precio
final a pagar que será el precio total menos el monto del porcentaje.
Sub Condicional3_HC()
'Aplicar descuento calculando con variables Observe el resultado:
Dim precio As Single
Dim descuento As Single
Dim des
precio = 0
precio = Val(InputBox("Ingresar el precio", "Ingreso"))
' si el valor de precio es > 1000, aplicar descuento del 10%
Guarde el libro con el nombre de:
If precio > 1000 Then
Prac5 condicional3.xlsm
descuento = precio * (10 / 100)
des = "10%"
Else
'sino aplicar el 5% Modifique el código anterior donde el
descuento = precio * (5 / 100) valor del porcentaje sea ingresado por
des = "5%" teclado.
End If
ActiveSheet.Range("A1").Value = "Precio"
ActiveSheet.Range("B1").Value = "Descuento"
ActiveSheet.Range("C1").Value = "Monto desc."
ActiveSheet.Range("D1").Value = "Neto a pagar"
Range("A2").Activate
Selection.EntireRow.Insert
ActiveSheet.Range("A2").Value = precio
ActiveSheet.Range("B2").Value = des
ActiveSheet.Range("C2").Value = descuento
ActiveSheet.Range("D2").Value = precio - descuento
End Sub
ESTRUCTURA CONDICIONAL MULTIPLE CON SELECT-CASE
Este tipo de estructura evaluará una expresión que podrá tomar n valores distintos, 1,2,3…n; según elija una de
éstos valores en la condición, se realizará una las n acciones.
Formato: Select Case Expresión
Case Valor1 : acción1
Case Valor2 : acción2

Instituto de Informática y Telecomunicaciones Pág. ~ 8 ~ Lic. Manuel Mendoza M.


Telf. 52 - 583000
Macros y Programación
con VBA Curso de Microsoft Excel Nivel Avanzado

…………
Case ValorN : acción
Else
Acción falsa
End Select
1. En un nuevo libro, visualice el mensaje “Bebe” si la edad está entre 0 y 5, “Adolescente” si la edad está
entre 6 y 17, “Adulto”, si la edad es mayo o igual a 18.
Sub CondicionCase_1()
Dim Edad As Byte
Edad = InputBox("Ingrese la edad de la persona")
Select Case Edad
Case 0 To 5
MsgBox "Es un Bebe"
Case 6 To 17
MsgBox "Es un Adolescente" Guarde el Libro con el nombre de:
Case Is >= 18 Prac8 CaseMensajes.xlsm
MsgBox "Es un Adulto"
End Select
End Sub

APLICANDO ESTRUCTURAS SELECT CASE EN UNA HOJA DE CÁLCULO


En un nuevo libro y realice el siguiente programa:
Se pide ingresar tres notas de un alumno mediante la función InputBox. Las notas van a guardarse en las celdas
A1, A2 y A3 de la hoja activa. El programa debe calcular el promedio de dichas notas y guarda el valor en A4.
Si la media o promedio está entre 0 y 2, guardar en A5 el mensaje: “Muy deficiente”.
Si la nota promedio es 3, en A5, indicar el mensaje:”Deficiente”
Si la nota promedio es 4, en A5, indicar el texto: “Insuficiente”
Si la nota promedio es 5, “Suficiente”. Si la nota es 6, “Bien”. Si está entre 7 y 8, “Notable” y si es mayor que 8,
“Sobresaliente”.
Observe el resultado.
Sub Evaluacion()
'calcular promedio de 3 notas
' aplicando select case
Dim nota1 As Integer, nota2 As Integer, nota3 As Integer
Dim media As Single
nota1 = Val(InputBox("Entrar nota primera evaluación", "Nota"))
nota2 = Val(InputBox("Entrar nota segunda evaluación", "Nota"))
nota3 = Val(InputBox("Entrar nota tercera evaluación", "Nota"))
media = (nota1 + nota2 + nota3) / 3
ActiveSheet.Range("A2").Value = nota1
Range("A3").Value = nota2
Range("A4") = nota3
Range("A5") = media
Select Case media Guarde el libro con el nombre: Prac8
Case 0 To 2
CaseEvaluacion.xlsm
ActiveSheet.Range("A6").Value = "Muy deficiente"
Case 2.1 To 3
Range("A6").Value = "Deficiente"
Case 3.1 To 4
Range("A6") = "Insuficiente"
Case 4.1 To 5
Range("A6") = "Suficiente"
Case 5.1 To 6
Range("A6") = "Bien"
Case 7 To 8
Range("A6") = "Notable"
Case Is > 8
Range("A6") = "Sobresaliente"
End Select
End Sub

Instituto de Informática y Telecomunicaciones Pág. ~ 9 ~ Lic. Manuel Mendoza M.


Telf. 52 - 583000
Macros y Programación
con VBA Curso de Microsoft Excel Nivel Avanzado

TAREA
Proceda a modificar el programa anterior para que los datos sean guardados en forma horizontal, es decir, se
deben ir registrando o insertando nuevos datos almacenados por filas. Ponga los encabezados según su
criterio(Nota1, Nota2, Nota3, Promedio, Calificación). Puede elegir cambiar los valores(0 a 5, Muy deficiente, …
19 a 20, Sobresaliente, etc.) para las calificaciones expresivas.

ESTRUCTURAS REPETITIVAS
Tienen por objetivo repetir las instrucciones un determinado número de veces mientras se cumpla una condición.
Este número de veces que se repita una instrucción también se le denomina bucle o ciclo.
En este tipo de estructuras se utilizan normalmente variables llamadas contadores y/o acumuladores.
CONTADOR
Es un tipo de variable que guarda valores incrementables generalmente de uno en uno las ocurrencias de una
condición. Se aplican para determinar por ejemplo:
• El número de veces que se hizo en un botón
• El número de vendedores que superan las ventas mayores a 10000 mensuales
Formato:
Contador = Contador + 1 (la variable Contador se incrementa de uno en uno )
X = X +1
J = j + 3 (el incremento es de 3 en 3)
ACUMULADOR
Es un tipo de variable llamado también totalizador, cuya misión es registrar las cantidades variables de sumas
sucesivas. Se aplican para determinar por ejemplo:
• El acumulado de los sueldos de los empleados de una empresa
Inicio
• Suma de las notas de un alumno.
• Suma de las ventas realizados en el día.
Formato: Acumulador = Acumulador + Valorvariable F
Total = Total + Nota(i) Condición

V
TIPOS DE ESTRUCTURA Y SUS SENTENCIAS
Hay varios tipos de estructuras repetitivas:
Acción
• For … Next. Ejecuta un bloque de instrucciones según el valor de una
variable contador
Sintaxis: For contador To finnumero Step incremento
<instrucciones> Incremento
Next
• For… Each… Next. Ejecuta un bloque de instrucciones para element de
una colección de objetos.
Sintaxis : For Each elemento In grupo
<instrucciones>
Next elemento
• Do … Loop. Ejecuta un bloque de instrucciones un número indeterminado de veces.
Tiene varios formatos:
Sintaxis 1 Sintaxis 2 Sintaxis 3 Sintaxis 4
Do While condición Do Do Until condición Do
<instrucciones> <instrucciones> <instrucciones> <instrucciones>
Loop Loop While condición Loop Loop Until condición

Diagrama de flujo de una estructura While.

F
Condición

Acción

Instituto de Informática y Telecomunicaciones Pág. ~ 10 ~ Lic. Manuel Mendoza M.


Telf. 52 - 583000
Macros y Programación
con VBA Curso de Microsoft Excel Nivel Avanzado

APLICACIONES CON LA SENTENCIA FOR…NEXT


En un nuevo libro y en la ventana de VBA, inserte un nuevo módulo y realice los siguientes procedimientos.
Guarde el libro con: Prac5 ForNext.xlsm
1. Imprimir la suma de los 10 primeros números
Sub EstructuraFor_1()
Dim i% ' Variable Contador i
Dim S% ' Variable Acumulador S
For i = 1 To 10
S=S+i
Next
MsgBox "La suma de los 10 primeros números es: " & S
End Sub
2. Visualice los 10 primeros números en forma descendente de uno en uno
Sub EstructuraFor_2() Al ejecutar dar ENTER
Dim i% varias veces, hasta
For i = 10 To 1 Step -1 llegar a 1
MsgBox i
Next
End Sub
3. Visualice los 10 primeros números en forma descendente y su suma
Sub EstructuraFor_3()
' Visualiza los números en forma descendente y su total
Dim i%
For i = 10 To 1 Step -1
S=S+i
texto = texto & i & vbLf
Next i
MsgBox texto & vbNewLine & "Total: " & S
End Sub
4. Visualice los 10 primeros números pares
Sub EstructuraFor_4() Implemente la suma
' Visualiza los 10 primeros números pares de dichos números
Dim i%
For i = 1 To 10
par = i * 2
texto = texto & par & vbLf
Next i
MsgBox texto
End Sub
5. Visualice los 10 primeros números impares
Sub EstructuraFor_5() Implemente la suma
' Visualiza los 10 primeros números impares de dichos números
Dim i%
For i = 1 To 10
impar = i * 2
texto = texto & impar & vbLf
Next i
MsgBox texto
End Sub
6. Repita la palabra PROCESO tantas veces. El número a repetir debe ser ingresado por teclado
Sub EstructuraFor_6() Al ejecutar, ingrese
'Uso de FOR NEXT e INPUTBOX primero un número,
Repite = Val(InputBox("Numero de repeticiones", "Demo ejemplo: 3 y pulsar
for...next"))
ENTER, tantas veces
For x = 1 To Repite
hasta terminar las
MsgBox "PROCESO " & x & " de " & Repite
Next x acciones.
End Sub

Instituto de Informática y Telecomunicaciones Pág. ~ 11 ~ Lic. Manuel Mendoza M.


Telf. 52 - 583000
Macros y Programación
con VBA Curso de Microsoft Excel Nivel Avanzado

7. Se pide ingresar por teclado una cantidad de estudiantes e ingresar por teclado el puntaje final de cada
estudiante para obtener el promedio global de todos los estudiantes
Sub EstructuraFor_7()
numestud = InputBox("¿Cuántos estudiantes?", _
"Calcular promedios")
For contar = 1 To numestud
sPuntaje = Val(InputBox("Ingrese Puntaje: ", , 0))
Puntajetotal = Puntajetotal + sPuntaje
Next contar
spromedio = Puntajetotal / numestud
MsgBox "El promedio es: " + Str(spromedio)
End Sub

8. FOR ANIDADO. Crear un procedimiento para generar n filas por 5 columnas


Sub EstructuraFor_8()
' USO DE FOR NEXT ANIDADO
numeros = InputBox("Ingrese número de filas a generar: ")
For i = 1 To numeros
For j = 1 To 5
texto = texto & (i * j) & vbTab
Next j
texto = texto & vbLf
Next i
MsgBox texto, vbInformation, "Tabla"
End Sub
9. Se pide ingresar 10 valores por teclado y después del ultima valor calcular la suma de dichos valores
Sub EstructuraFor_9()
'Llena datos numéricos en las celdas de la columna A
'y suma el total de los numeros al final del ultimo valor
Dim i As Integer
Dim total As Integer
Dim valor As Integer
Range("A3").Select
For i = 1 To 10
If ActiveCell.Offset(1, 0).Value <> "" Then
Selection.End(xlDown).Activate
End If
valor = Val(InputBox("Entrar el valor Nº " & i, " Entrar"))
total = total + valor
If valor = Empty Then
Exit Sub
End If
ActiveCell.Offset(1, 0).Activate
ActiveCell.Value = valor
Next i
ActiveCell.Offset(1, 0).Activate
ActiveCell.Offset.Value = total
End Sub
APLICACIONES CON LA SENTENCIA DO…LOOP
En un nuevo libro y en la ventana de VBA, inserte un nuevo módulo y realice los siguientes procedimientos.
Guarde el libro con: Prac8 Do_Loop.xlsm
1. Visualice la suma de los 10 primeros números
Sub EstructuraDo_1()
Dim i% ' Variable Contador i
Dim S% ' Variable Acumulador S
i = 0: S = 0
Do While i < 10
i = i + 1: S = S + i
Loop
MsgBox "La suma de los 10 primeros números es: " & S
End Sub

Instituto de Informática y Telecomunicaciones Pág. ~ 12 ~ Lic. Manuel Mendoza M.


Telf. 52 - 583000
Macros y Programación
con VBA Curso de Microsoft Excel Nivel Avanzado

2. Visualice los 10 primeros números en forma descendente.


Sub EstructuraDo_2() Al ejecutar dar
Dim i% ENTER varias veces,
i = 10 hasta llegar a 1
MsgBox i, , "Do While"
Do While i > 1
i=i-1
MsgBox i, , "Do While"
Loop
End Sub
3. Visualice los 10 primeros números en forma descendente y su suma
Sub EstructuraDo_3()
' Visualiza los número en forma descendente y su total
Dim i%
A = 10: S = 10: i = 0
Do While A > i
texto = texto & A & vbLf
A=A-1
S=S+A
Loop
MsgBox texto & vbNewLine & "Total: " & S
End Sub
4. Visualice los 10 primeros números pares
Sub EstructuraDo_4() Implemente la suma
' Visualiza los 10 primeros números pares de dichos números
Dim i%
i=1
Do While i <= 10
par = i * 2
texto = texto & par & vbLf
i=i+1
Loop
MsgBox texto, , “Do While”
End Sub
5. Visualice los 10 primeros números impares
Sub EstructuraDo_5() Implemente la suma
' Visualiza los 10 primeros números impares de dichos números
Dim i%
i=1
Do While i <= 10
impar = i * 2 - 1
texto = texto & impar & vbLf
i=i+1
Loop
MsgBox texto, , "Do While"
End Sub
6. Aplicando Do Loop While
Sub EstructuraDo_6()
Dim numeroBingo As Integer
Do
numeroBingo = Int(10 * Rnd())
Beep
Loop While numeroBingo <> 7
MsgBox "su numero es el " & numeroBingo & " ¡Acertó"
End Sub
7. APLICANDO DO WHILE LOOP A UNA HOJA DE CALCULO.
Se desea ingresar datos de personal en una base de datos. Cada campo se ingresa por teclado con
InputBox. El programa debe ir pidiendo datos mientras se ingrese un valor en el InputBox
correspondiente al nombre, es decir, cuando no se digite nada en campo nombre, terminará el proceso

Instituto de Informática y Telecomunicaciones Pág. ~ 13 ~ Lic. Manuel Mendoza M.


Telf. 52 - 583000
Macros y Programación
con VBA Curso de Microsoft Excel Nivel Avanzado

Do While. Observe la nueva instrucción With que simplifica la repetición de la propiedad activecell en
cada campo.
Sub DoWhile1()
' ingresar datos por columnas y en cada fila
Dim nombre As String
Dim ciudad As String
Dim edad As Integer
Dim fecha As Date
Worksheets(1).Activate
'activar celda A2
Range("A2").Activate
nombre = InputBox("Entre el nombre (Enter para terminar) : ", "Nombre")
'Mientras la variable nombre no este vacío hacer lo siguiente
Do While nombre <> ""
ciudad = InputBox("Entre la ciudad :", "Ciudad")
edad = Val(InputBox("Entre la edad :", "Edad"))
fecha = CDate(InputBox("Fecha Nacimiento: ", "Fecha"))
With ActiveCell
.Value = nombre
.Offset(0, 1) = ciudad
.Offset(0, 2) = edad
.Offset(0, 3) = fecha
End With
'hacer activa la celda de la fila siguiente a la actual
ActiveCell.Offset(1, 0).Activate
nombre = InputBox("Entre el nombre (Enter para terminar) : ", "Nombre")
Loop
End Sub

FIN DE LA PRACTICA 6

Instituto de Informática y Telecomunicaciones Pág. ~ 14 ~ Lic. Manuel Mendoza M.


Telf. 52 - 583000

También podría gustarte