visual basic para aplicaciones(ejemplos y ejercicios)
TRANSCRIPT
1
EJEMPLO 1: INSTRUCCIÓN CONDICIONAL................................................................................1EJEMPLO 2: INSTRUCCIÓN CONDICIONAL................................................................................3EJEMPLO 3: INSTRUCCIÓN CONDICIONAL...............................................................................5EJERCICIOS PROPUESTOS....................................................................................................8EJEMPLO 4: INSTRUCCIÓN CONDICIONAL...............................................................................8EJEMPLO 5: INSTRUCCIÓN CONDICIONAL.............................................................................10EJEMPLO 6: BUCLE FOR...................................................................................................13EJEMPLO 7: INGRESO DE DATOS EN UNA MATRIZ..................................................................15EJEMPLO 8: BUCLE CONDICIONAL DO.................................................................................17EJEMPLO 9: RECORRIDO DE UNA MATRIZ...........................................................................19EJERCICIOS PROPUESTOS:.................................................................................................20EJEMPLO 10: CREACIÓN DE LIBROS....................................................................................20EJEMPLO 11: NOMBRA HOJAS...........................................................................................20EJEMPLO 12: CREA HOJA Y AGREGA DATOS..........................................................................21EJEMPLO 13: RELLENA LAS CELDAS DE A2 A A6 DE LA HOJA ACTIVA CON LOS PARES DEL 2 AL DIEZ.21EJEMPLO 14: CREA UNA BASE DE DATOS EN LA HOJA3 Y RELLENA LOS REGISTROS......................22
Página 1
1
2
Ejemplos y Ejercicios
Ejemplo 1: Instrucción condicional
Solicita un valor entero y determina si es mayor, menor o igual a cero. Devuelve un mensaje en el que indica si es negativo, cero o positivo.
Diagrama del Problema
Sub Entero1()Dim Entero As IntegerEntero = InputBox("Ingrese un número entero", "Cuadro de Ingreso de Datos")If Entero > 0 Then MsgBox "El dato es positivo", vbInformation + vbOKOnly, "Información sobre el dato ingresado"ElseIf Entero < 0 Then MsgBox "El dato es negativo", vbInformation + vbOKOnly, "Información sobre el dato ingresado"Else MsgBox "El dato es igual a Cero", vbInformation + vbOKOnly, "Información sobre el dato ingresado"End IfEnd Sub
Página 2
El Dato es Negativo
El Dato es Positivo
Fin
El Dato es igual a Cero
Entero < 0
Entero > 0
Entero
Macro Entero
1
123456789
1011
2
Explicación:
Línea 1: Sub es la instrucción que inicia la macro, la indicación Entero1() corresponde al nombre que
hemos asignado a dicha macro, este nombre puede cambiarse por cualquier otro que se crea
conveniente.
Línea2: Declaramos una variable de nombre Entero mediante la instrucción Dim y le asignamos el tipo de
Datos Integer (Entero) mediante la instrucción As
Línea 3: Mediante la instrucción InputBox solicitamos un dato al usuario y lo guardamos en la variable
Entero.
Línea 4: Mediante la instrucción If iniciamos el bloque de decisión y comprobamos si valor guardado en
la Variable Entero es mayor a cero y de ser así pasamos el control a la instrucción Then, que pasa
el control a la línea 5, sino pasa el control a la línea 6, literalmente “Si Entero >0 entonces”
Línea 5: Mediante la instrucción Msgbox mostramos un mensaje donde se indica que el número es
positivo.
Línea 6: Mediante la instrucción ElseIf se realiza otra comprobación, en este caso si el valor guardado en
Entero es menor a cero y de ser así se pasa el control a la instrucción Then que pasa el control a
la línea 7, sino pasa el control a la línea 8.
Línea 7: Mediante la instrucción MsgBox se muestra un mensaje donde se indica que el número es
negativo
Línea 8: Mediante la instrucción Else se indica que si no se ha cumplido ninguna de las condiciones
anteriores (Entero >0 o Entero <0) se ejecute la línea 9
Línea 9: Mediante la instrucción MsgBox se muestra un mensaje indicando que el número es cero.
Línea 10: Mediante la instrucción End If acabamos con el bloque de decisión.
Línea 11: Mediante la instrucción End Sub acabamos con la macro.
Página 3
1
2
Ejemplo 2: Instrucción condicional
Solicita un nombre y determina si el nombre es “Alex”. Si lo es devuelve el mensaje “Hola Alex!”, caso contrario devuelve el mensaje “No te conozco Nombre”
Diagrama del Problema
Sub Nombres()Dim Nombre As StringNombre = InputBox("Ingrese su nombre", "Ingreso de Datos")If Nombre = "Alex" Then MsgBox "Hola " & Nombre & "!"Else MsgBox "No te conozco " & NombreEnd IfEnd Sub
Explicación:
Línea 1: Sub es la instrucción que inicia la macro, la indicación Nombres() corresponde al nombre que
hemos asignado a dicha macro, este nombre puede cambiarse por cualquier otro que se crea
conveniente.
Línea2: Declaramos una variable de nombre Nombre mediante la instrucción Dim y le asignamos el tipo
de Datos String (Cadena de Texto) mediante la instrucción As
Línea 3: Mediante la instrucción InputBox solicitamos un nombre al usuario y lo guardamos en la variable
Nombre.
Línea 4: Mediante la instrucción If iniciamos el bloque de decisión y comprobamos si valor guardado en
la Variable Nombre es Alex y de ser así pasamos el control a la instrucción Then, que pasa el
Página 4
Fin
No te conozco + Nombre
Hola Alex!
Nombre = Alex
Nombre
Macro Nombres
1
123456789
2
control a la línea 5, sino pasa el control a la línea 6, literalmente “Si Nombre es igual a Alex
entonces”
Línea 5: Mediante la instrucción Msgbox mostramos un mensaje “Hola” y le concatenamos el valor de
Nombre.
Línea 6: Mediante la instrucción Else se indica que si no se ha cumplido la condición anterior (Nombre =
“Alex”) se ejecute la línea 7
Línea 7: Mediante la instrucción MsgBox se muestra un mensaje “No te conozco” y se le concatena el
valor de Nombre.
Línea 8: Mediante la instrucción End If acabamos con el bloque de decisión.
Línea 9: Mediante la instrucción End Sub acabamos con la macro.
Página 5
1
2
Ejemplo 3: Instrucción Condicional
Solicita un monto, un periodo de tiempo, una tasa y devuelve el interés simple generado. A los datos ingresados se les hace comprobación para determinar si son válidos.
Diagrama del Problema
Página 6
Macro Interés Simple
Principal
Principal > 0
Principal
Tiempo
Tiempo > 0
Tasa
Tasa > 0
Resultado = Principal * (Tasa / 100) * Tiempo
Fin
Datos no válidos
Datos no válidos
Datos no válidos
1
2
Sub InteresSimple()Dim Principal As CurrencyDim Tiempo As IntegerDim Tasa As SingleDim Resultado As SingleEntradaCapital: Principal = InputBox("Ingrese el capital a Invertir", "Cálculo Principal") If Principal <= 0 Then MsgBox "Datos no válidos", vbCritical + vbOKOnly, "Error en Datos" GoTo EntradaCapital End IfEntradaTiempo: Tiempo = InputBox("Ingrese el periodo de tiempo") If Tiempo <= 0 Then MsgBox "Datos no válidos", vbCritical + vbOKOnly, "Erro en Datos" GoTo EntradaTiempo End IfEntradaTasa: Tasa = InputBox("Ingrese el valor de la tasa sin el signo de %", "Ingreso de Tasa") If Tasa <= 0 Then MsgBox "Datos no válidos", vbCritical + vbOKOnly, "Error en Datos" GoTo EntradaTasa End IfResultado = Principal * (Tasa / 100) * TiempoMsgBox "El interés generado es de " & Resultado, vbInformation + vbOKOnly, "Interés Generado"End Sub
Explicación:
Línea 1: Sub es la instrucción que inicia la macro, la indicación InteresSimple() corresponde al nombre
que hemos asignado a dicha macro, este nombre puede cambiarse por cualquier otro que se crea
conveniente.
Línea2: Declaramos una variable de nombre Principal mediante la instrucción Dim y le asignamos el tipo
de Datos Currency (Moneda) mediante la instrucción As
Línea 3: Declaramos una variable de nombre Tiempo mediante la instrucción Dim y le asignamos el tipo
de Datos Integer (Entero) mediante la instrucción As
Línea 4: Declaramos una variable de nombre Tasa mediante la instrucción Dim y le asignamos el tipo de
Datos Single (Simple) mediante la instrucción As
Línea 5: Declaramos una variable de nombre Resultado mediante la instrucción Dim y le asignamos el
tipo de Datos Single (Simple) mediante la instrucción As
Línea 6: Asignamos una etiqueta EntradaCapital para luego hacer referencia a esa línea de código.
Línea 7: Mediante la instrucción InputBox solicitamos un capital al usuario y lo guardamos en la variable
Principal.
Página 7
1
123456789
1011121314151617181920212223242526
2
Línea 8: Mediante la instrucción If iniciamos el bloque de decisión y comprobamos si valor guardado en
la Variable Principal es menor o igual a cero y de ser así pasamos el control a la instrucción Then,
que pasa el control a la línea 9, sino pasa el control a la línea 11, literalmente “Si Principal es
negativo o cero entonces”
Línea 9: Mediante la instrucción MsgBox se muestra un mensaje de Datos no válidos.
Línea 10: Mediante la instrucción GoTo pasamos el control a la etiqueta EntradaCapital (Línea 6)
Línea 11: Mediante la instrucción End If acabamos con el bloque de decisión.
Línea 12: Asignamos una etiqueta EntradaTiempo para luego hacer referencia a esa línea de código.
Línea 13: Mediante la instrucción InputBox solicitamos un periodo de tiempo al usuario y lo guardamos
en la variable Tiempo.
Línea 14: Mediante la instrucción If iniciamos el bloque de decisión y comprobamos si valor guardado en
la Variable Tiempo es menor o igual a cero y de ser así pasamos el control a la instrucción Then,
que pasa el control a la línea 15, sino pasa el control a la línea 17, literalmente “Si Tiempo es
negativo o cero entonces”
Línea 15: Mediante la instrucción MsgBox se muestra un mensaje de Datos no válidos.
Línea 16: Mediante la instrucción GoTo pasamos el control a la etiqueta EntradaTiempo (Línea 12)
Línea 17: Mediante la instrucción End If acabamos con el bloque de decisión.
Línea 18: Asignamos una etiqueta EntradaTasa para luego hacer referencia a esa línea de código.
Línea 19: Mediante la instrucción InputBox solicitamos un tasa de interés al usuario y lo guardamos en la
variable Tasa.
Línea 20: Mediante la instrucción If iniciamos el bloque de decisión y comprobamos si valor guardado en
la Variable Tasa es menor o igual a cero y de ser así pasamos el control a la instrucción Then, que
pasa el control a la línea 21, sino pasa el control a la línea 23, literalmente “Si Tasa es negativo o
cero entonces”
Línea 21: Mediante la instrucción MsgBox se muestra un mensaje de Datos no válidos.
Línea 22: Mediante la instrucción GoTo pasamos el control a la etiqueta EntradaTasa (Línea 18)
Línea 23: Mediante la instrucción End If acabamos con el bloque de decisión.
Línea 24: Asignamos a la variable Resultado el valor resultante de la fórmula de interés simple (C*r*t),
siendo en este caso C=Capital, r= (Tasa/100) y t = Tiempo
Línea 25: Mediante la instrucción MsgBox se muestra un mensaje con el valor de la variable Resultado.
Línea 26: Mediante la instrucción End Sub acabamos con la macro.
Ejercicios Propuestos
1) Crear una macro que solicite dos números enteros y devuelva un mensaje indicando cuál es el mayor.
2) Crear una macro que solicite tres números y devuelva un mensaje con los números ordenados de manera descendente (de mayor a menor).
3) Crear una macro que solicite el capital invertido(Principal), el periodo de inversión y el capital obtenido al final del periodo y devuelva un mensaje con la tasa aplicada para obtener dicho capital.(Interés simple)
Página 8
1
2
Ejemplo 4: Instrucción Condicional
Solicita un dato y devuelve un mensaje indicando si es positivo, negativo o cero.
Diagrama del Problema
Ver Ejemplo 4
Sub Numeros()Dim Valor1 As DoubleValor1 = InputBox("Ingrese un número", "Ingreso de Datos")Select Case Valor1 Case Is > 0 MsgBox "El valor es número positivo", vbInformation + vbOKOnly, "Información" Case Is < 0 MsgBox "El valor es número negativo", vbInformation + vbOKOnly, "Información" Case Else MsgBox "El valor es cero", vbInformation + vbOKOnly, "Información"End SelectEnd Sub
Explicación:
Línea 1: Sub es la instrucción que inicia la macro, la indicación Numeros() corresponde al nombre que
hemos asignado a dicha macro, este nombre puede cambiarse por cualquier otro que se crea
conveniente.
Línea2: Declaramos una variable de nombre Valor1 mediante la instrucción Dim y le asignamos el tipo de
Datos Double (Doble) mediante la instrucción As
Línea 3: Mediante la instrucción InputBox solicitamos un dato al usuario y lo guardamos en la variable
Valor1.
Línea 4: Mediante la instrucción Select Case iniciamos el bloque de decisión y comprobamos las diversas
posibilidades para el valor guardado en la Variable Valor1, literalmente “Seleccionar el caso para
Valor1”
Línea 5: Mediante la instrucción Case Is se determina si el valor guardado en Valor1 es mayor a Cero y
de ser así se pasa el control a la línea 6, en caso contrario se pasa a la línea 7.
Línea 6: Mediante la instrucción Msgbox mostramos un mensaje donde se indica que el número es
positivo.
Línea 7: Mediante la instrucción Case Is se determina si el valor guardado en Valor1 es menor a Cero y
de ser así se pasa el control a la línea 8, en caso contrario se pasa a la línea 9.
Línea 8: Mediante la instrucción MsgBox se muestra un mensaje donde se indica que el número es
negativo
Línea 9: Mediante la instrucción Case Eslse se indica que si el valor guardado en Valor1 no cumple
ninguno de los casos anteriores se pasa el control a la línea 10.
Línea 10: Mediante la instrucción MsgBox se muestra un mensaje indicando que el número es cero.
Línea 11: Mediante la instrucción End Select acabamos con el bloque de decisión.
Página 9
1
123456789
101112
2
Línea 12: Mediante la instrucción End Sub acabamos con la macro.
Página 10
1
2
Macro Días Semana
DomingoLunesMartesMiércolesJuevesViernesSábado
Día
Dia ≥1 y Dia ≤7
Domingo
Dia
123456 7
Lunes MartesMiércole
sJueves Viernes Sábado
Datos No válidos
Fin
Ejemplo 5: Instrucción Condicional
Muestra una lista de los días de la semana, solicita que se seleccione uno de ellos y muestra el mensaje “Días solicitado es…”
Diagrama del Problema
Página 11
1
2
Sub DiasSemana()Dim Dia As IntegerDim Dias As StringIngresoDias:
Dia = InputBox("1-Domingo" & Chr(13) & "2-Lunes" & Chr(13) & "3-Martes" & Chr(13) & "4-Miércoles" & Chr(13) & "5-Jueves" & Chr(13) & "6-Viernes" & Chr(13) & "7-Sábado" & Chr(13) & "Ingrese el número correspondiente al día de la semana", "Ingreso de Datos")
If Dia < 1 Or Dia > 7 Then MsgBox "Datos no válidos, ingrese un número de la lista" GoTo IngresoDias End If
Select Case Dia Case 1 Dias = "Domingo" Case 2 Dias = "Lunes" Case 3 Dias = "Martes" Case 4 Dias = "Miércoles" Case 5 Dias = "Jueves" Case 6 Dias = "Viernes" Case 7 Dias = "Sábado"
End SelectMsgBox "Día seleccionado es " & Dias, vbExclamation + vbOKOnly, "Días"
End Sub
Explicación
Línea 1: Sub es la instrucción que inicia la macro, la indicación DiasSemana() corresponde al nombre
que hemos asignado a dicha macro, este nombre puede cambiarse por cualquier otro que se crea
conveniente.
Línea 2: Declaramos una variable de nombre Dia mediante la instrucción Dim y le asignamos el tipo de
Datos Integer (Entero) mediante la instrucción As
Línea 3: Declaramos una variable de nombre Dias mediante la instrucción Dim y le asignamos el tipo de
Datos String (Cadena de Texto) mediante la instrucción As
Línea 4: Asignamos una etiqueta IngresoDias para luego hacer referencia a esa línea de código.
Línea 5, 6 y 7: Mediante la instrucción InputBox mostramos una lista al usuario y solicitamos un dato
guardándolo en la variable Dia.
Línea 4: Mediante la instrucción Select Case iniciamos el bloque de decisión y comprobamos las diversas
posibilidades para el valor guardado en la Variable Valor1, literalmente “Seleccionar el caso para
Valor1”
Página 12
1
1234
56789
1011121314151617181920212223242526272829
2
Línea 5: Mediante la instrucción Case Is se determina si el valor guardado en Valor1 es mayor a Cero y
de ser así se pasa el control a la línea 6, en caso contrario se pasa a la línea 7.
Línea 6: Mediante la instrucción Msgbox mostramos un mensaje donde se indica que el número es
positivo.
Línea 7: Mediante la instrucción Case Is se determina si el valor guardado en Valor1 es menor a Cero y
de ser así se pasa el control a la línea 8, en caso contrario se pasa a la línea 9.
Línea 8: Mediante la instrucción MsgBox se muestra un mensaje donde se indica que el número es
negativo
Línea 9: Mediante la instrucción Case Eslse se indica que si el valor guardado en Valor1 no cumple
ninguno de los casos anteriores se pasa el control a la línea 10.
Línea 10: Mediante la instrucción MsgBox se muestra un mensaje indicando que el número es cero.
Línea 11: Mediante la instrucción End Select acabamos con el bloque de decisión.
Línea 12: Mediante la instrucción End Sub acabamos con la macro.
Página 13
1
2
Sub Bucle Mensaje
Indice
Indice >0Datos Incorrectos
Inicio x= 1 hasta x= Indice
Bucle Número + x
Fin de Bucle x
Fin
Ejemplo 6: Bucle for
Solicita un número entero y muestra el mensaje “Bucle número …”.
Diagrama del Problema
Sub BucleMensaje() Dim Indice As IntegerIngreso: Indice = InputBox("Ingrese un número entero positivo", "Ingreso de Datos") If Indice <= 0 Then MsgBox "Número no válido, ingrese un número positivo", vbCritical + vbOKOnly, "Error en Datos" GoTo Ingreso End If For x = 1 To Indice MsgBox "Bucle número " & x Next xEnd Sub
Página 14
1
123456789
101112
2
Explicación
Línea 1: Sub es la instrucción que inicia la macro, la indicación BucleMensaje() corresponde al nombre
que hemos asignado a dicha macro, este nombre puede cambiarse por cualquier otro que se crea
conveniente.
Línea 2: Declaramos una variable de nombre Indice mediante la instrucción Dim y le asignamos el tipo
de Datos Integer (Entero) mediante la instrucción As
Línea 3: Asignamos una etiqueta Ingreso para luego hacer referencia a esa línea de código.
Línea 4: Mediante la instrucción InputBox solicitamos un entero al usuario y lo guardamos en la variable
Indice.
Línea 5: Mediante la instrucción If iniciamos el bloque de decisión y comprobamos si valor guardado en
la Variable Indice es menor o igual a cero y de ser así pasamos el control a la instrucción Then,
que pasa el control a la línea 6, sino pasa el control a la línea 8, literalmente “Si Indice es
negativo o cero entonces”
Línea 6: Mediante la instrucción MsgBox se muestra un mensaje de Datos no válidos.
Línea 7: Mediante la instrucción GoTo pasamos el control a la etiqueta Ingreso (Línea 3)
Línea 8: Mediante la instrucción End If acabamos con el bloque de decisión.
Línea 9: Mediante la instrucción For se inicia un bucle inicia con un contador x = 1 aumentando en 1 y
mediante la instrucción To se indica que finaliza cuando x tenga el mismo valor que Indice.
Línea 10: Mediante la instrucción MsgBox se muestra un mensaje en el cual se indica el valor de la x para
cada repetición del bucle.
Línea 11: Mediante la instrucción Next se aumenta el valor de la x en 1 y se devuelve el control a la línea
10
Línea 12: Mediante la instrucción End Sub acabamos con la macro.
Página 15
1
2
Ejemplo 7: Ingreso de Datos en una Matriz
Solicita un conjunto de cuatro Referencias a celdas y las muestra luego en un mensaje.
Diagrama del Problema
Sub LlenaMatrix() Dim MiMatriz(3) As String Dim Resultado As String For x = 0 To 3 MiMatriz(x) = InputBox("Ingrese una referencia a celda tipo A1", "Ingreso de Datos") Next x For j = 0 To 3 Resultado = Resultado & Chr(13) & MiMatriz(j) Next j MsgBox "Las referencias ingresadas son: " & Resultado, vbInformation + vbOKOnly, "Salida de Datos"End Sub
Explicación
Línea 1: Sub es la instrucción que inicia la macro, la indicación LlenaMatrix()
corresponde al nombre que hemos asignado a dicha macro, este nombre
puede cambiarse por cualquier otro que se crea conveniente.
Línea 2: Declaramos una Matriz de nombre MiMatriz de cuatro elementos mediante la
instrucción Dim y le asignamos el tipo de Datos String (Cadena de Texto)
mediante la instrucción As
Línea 3: Declaramos una variable de nombre Resultado mediante la instrucción
Dim y le asignamos el tipo de datos String ( Cadena de Texto) mediante la
instrucción As.
Línea 4: Mediante la instrucción For se inicia un bucle inicia con un contador x = 0
aumentando en 1 y mediante la instrucción To se indica que finaliza cuando x
tenga el valor 3.
Línea 5: Mediante la instrucción InputBox solicitamos una referencia al usuario y lo
guardamos como el elemento x de la matriz MiMatriz. Esta instrucción se repite
4 veces gracias al bucle, así se llenan cada uno de los elementos de la
matriz.
Línea 6: Mediante la instrucción Next se aumenta el valor de la x en 1 y se devuelve el control a la línea
5.
Línea 7: Mediante la instrucción For se inicia un bucle inicia con un contador j = 0 aumentando en 1 y
mediante la instrucción To se indica que finaliza cuando j tenga el valor 3.
Línea 8: Se concatena en cada ciclo del bucle los valores guardados en los elementos de la matriz
MiMatriz en la variable Resultado. El uso de la función Chr con el parámetro 13 es para ingresar
Página 16
Maccro Llena Matriz
Bucle inicio en x=0 hasta x= 3
MiMatriz(x)
Fin de bucle x
Bucle Inicia con j=0 hasta j=3
Resultado= Resultado + MiMatriz(j)
Fin bucle j
Resultado
Fin
1
123456789
10111213
2
un retorno de carro para que aparezcan los resultado en una lista y no en la misma línea de
mensaje cuando se muestren en pantalla.
Línea 9: Mediante la instrucción Next se aumenta el valor de la j en 1 y se devuelve el control a la línea 8
Línea 10: Mediante la instrucción MsgBox se muestra un mensaje con el valor de la variable Resultado.
Línea 11: Mediante la instrucción End Sub acabamos con la macro.
Página 17
1
2
Ejemplo 8: Bucle Condicional Do
Juego donde se le pide adivinar un número entre 1 y 100, en cinco intentos.
Diagrama del Problema
Juego Adivina
ElNumero aleatorio de 1 a
100
Contador=1
Contador < 6
MiNumero
MiNumero = ElNumero
Has adivinado el numero en +Contador + intentos
Has perdido, el número es + ElNumero
MiNumero < ElNumeroEl número
buscado es mayor
El número buscado es
menor
Contador + 1
Fin
Página 18
1
2
Sub JuegoAdivina()Dim Contador As IntegerDim MiNumero As IntegerDim ElNumero As IntegerContador = 1Randomize ‘ Esta instrucción permite generar un número al azarElNumero = Int((100 * Rnd) + 1) ‘Int transforma en entero y Rnd es el número generado por RandomizeDo While Contador < 6 MiNumero = InputBox("Ingrese un número de 1 a 100") If MiNumero = ElNumero Then MsgBox "Has adivinado en número en " & Contador & " intentos" Exit Do Else Contador = Contador + 1 If MiNumero < ElNumero Then MsgBox "El número buscado es mayor a " & MiNumero, vbInformation + vbOKOnly, "Salida de Datos" Else MsgBox "El número buscado es menor a " & MiNumero, vbInformation + vbOKOnly, "Salida de Datos" End If End IfLoopIf MiNumero <> ElNumero Then MsgBox "Perdiste!" & Chr(13) & "El Número buscado era " & ElNumeroEnd Sub
Página 19
1
123456789
1011121314151617181920212223242526
27
2
Ejemplo 9: Recorrido de una Matriz
Se solicita un nombre, se busca en la matriz de nombres que se cuenta y se emite un mensaje si no está dentro de la lista de nombres.
Comprueba Nombre
Nombres()
Nombre
Bucle para cada elemento de Nombres()
Nombre=Nombres(i)El Nombre se
encuentra en la base de datos
Fin de Bucle Nombres()
El Nombre no se encuentra en la base de datos
Fin
Sub ListaNombres() Dim Nombres(4) As String Dim Nombre As String Dim NombreComprueba As String NombreComprueba = "" 'Ingreso de los nombres en la matriz
Página 20
1
123456
2
Nombres(0) = "Alexander" Nombres(1) = "Carlos" Nombres(2) = "Juan" Nombres(3) = "Marta" Nombres(4) = "Carmen" 'Solicitud del nombre Nombre = InputBox("Ingrese un Nombre", "Nombre") 'Recorrido de la matriz For Each Name In Nombres If Nombre = Name Then MsgBox "El Nombre se encuentra en la base de datos", vbInformation + vbOKOnly, "Resultado de Búsqueda" NombreComprueba = Name Exit For End If Next Name If NombreComprueba <> Nombre Then MsgBox "El nombre no se encuentra en la base de datos", vbExclamation + vbOKOnly, "Resultado de Búsqueda"End Sub
Ejercicios Propuestos:
1) Crear una macro que solicite dos números enteros y devuelva un listado de todos los números comprendidos entre ellos.
2) Crear una macro que solicite cuatro nombres y devuelva el mensaje “Hola, {Nombre}”
Ejemplo 10: Creación de libros
La siguiente macro crea un libro nuevo y oculta sus dos últimas hojas.
Sub CreaLibro() Dim LibroCreado As Workbook Set LibroCreado = Workbooks.Add LibroCreado.Worksheets(2).Visible = False LibroCreado.Worksheets(3).Visible = FalseEnd Sub
Ejemplo 11: Nombra Hojas
La siguiente macro crea un libro nuevo y da el nombre de “Principal”, “Datos Borrador”, “Datos Fijos” a sus respectivas hojas.
Sub NombraHojas() Dim LibroCreado As Workbook Set LibroCreado = Workbooks.Add
Página 21
1
123456789
1011121314151617181920
21222324252627
282930
2
With LibroCreado .Worksheets(1).Name = "Principal" .Worksheets(2).Name = "Datos Borrador" .Worksheets(3).Name = "Datos Fijos" End WithEnd Sub
Ejemplo 12: Crea hoja y agrega datos
La siguiente macro solicita diez datos numéricos, crea una hoja llamada “Suma de Datos” e ingresa los datos en columna a partir de la celda que se le especifique.
Caso 1: Se ingresan todos los datos una vez digitados en el rango correspondienteSub IngresaDatos() Dim LibroCreado As Workbook Dim Datos(9) As Double Dim Rango As String Set LibroCreado = Workbooks.Add With LibroCreado .Worksheets.Add After:=Worksheets(Worksheets.Count) .Worksheets(Worksheets.Count).Name = "Suma de Datos" End With For x = 0 To 9 Datos(x) = InputBox("Ingrese Dato", "Ingreso de Datos") Next x Rango = InputBox("Ingrese el rango o referencia", "Ingreso de Rangos") For j = 0 To 9 WorkSheets(“Suma de Datos”).Range(Rango).Offset(j, 0).Value = Datos(j) Next jEnd Sub
Caso II: Los Datos se van agregando a como se ingresan.Sub IngresoDatos2() Dim LibroCreado As Workbook Dim Datos As Double Dim Rango As String Set LibroCreado = Workbooks.Add With LibroCreado .Worksheets.Add After:=Worksheets(Worksheets.Count) .Worksheets(Worksheets.Count).Name = "Suma de Datos" End With Rango = InputBox("Ingrese el rango o referencia", "Ingreso de Rangos") For x = 0 To 9 Datos = InputBox("Ingrese Dato", "Ingreso de Datos") WorkSheets(“Suma de Datos”).Range(Rango).Offset(x, 0).Value = Datos Next xEnd Sub
Ejemplo 13: Rellena las celdas de A2 a A6 de la hoja activa con los pares del 2 al diez.
Sub rellenar() Dim Fila As Integer
Página 22
1
123456
789
101112131415161718192021222324
252627282930313233343536373839
4041
2
Fila = 2 For i = 2 To 10 Step 2 ActiveSheet.Cells(Fila, 1).Value = i Fila = Fila + 1 Next iEnd Sub
Ejemplo 14: Crea una base de datos en la Hoja3 y rellena los registros.
Sub Registros() 'Rellenar los registros de una Base de Datos. Hoja3 Dim Nombre As String Dim Ciudad As String Dim Edad As Integer Dim fecha As Date 'Activar Hoja3 Worksheets("Hoja3").Activate With ActiveSheet .Range("B4").Value = "Nombre" .Range("C4").Value = "Ciudad" .Range("D4").Value = "Edad" .Range("E4").Value = "Fecha" End With
'Para poner negrita y centrar la cabecera
Range("B4:E4").Select With Selection .Font.Bold = True .HorizontalAlignment = xlCenter End With
'Activar casilla B5
ActiveSheet.Range("B5").Activate Nombre = InputBox("Entre el Nombre (Return para Terminar) : ", "Nombre") 'Mientras la variable Nombre sea diferente a cadena vacía
Do While Nombre <> "" Ciudad = InputBox("Entre la Ciudad : ", "Ciudad") Edad = Val(InputBox("Entre la Edad : ", "Edad")) fecha = CDate(InputBox("Entra la Fecha : ", "Fecha")) 'Copiar los datos en las casillas correspondientes
With ActiveCell .Value = Nombre .Offset(0, 1).Value = Ciudad .Offset(0, 2).Value = Edad .Offset(0, 3).Value = fecha End With 'Hacer activa la celda de la fila siguiente a la actual
Página 23
1
123456
789
1011121314151617181920
21
222324252627
28
293031
3233343536
37383940414243
2
ActiveCell.Offset(1, 0).Activate Nombre = InputBox("Entre el Nombre (Return para Terminar) : ", "Nombre") Loop
'Seleccionamos la Base de Datos y la ponemos de color amarillo
Application.Goto Reference:="R4C2" Selection.CurrentRegion.Select With Selection.Interior .ColorIndex = 6 .Pattern = xlSolid End WithEnd Sub
Página 24
1
1234
5
6789
101112
2