Sie sind auf Seite 1von 27

Visual Basic para Aplicaciones

Ejemplos y Ejercicios M.M.I Alexander Arce Quirs


C.T.E 26/10/2011

EJEMPLO 1: INSTRUCCIN CONDICIONAL...............................................................................................................................1 EJEMPLO 2: INSTRUCCIN CONDICIONAL...............................................................................................................................3 EJEMPLO 3: INSTRUCCIN CONDICIONAL ..............................................................................................................................5 EJERCICIOS PROPUESTOS ..........................................................................................................................................................8 EJEMPLO 4: INSTRUCCIN CONDICIONAL ..............................................................................................................................8 EJEMPLO 5: INSTRUCCIN CONDICIONAL ........................................................................................................................... 10 EJEMPLO 6: BUCLE FOR .......................................................................................................................................................... 13 EJEMPLO 7: INGRESO DE DATOS EN UNA MATRIZ ............................................................................................................. 15 EJEMPLO 8: BUCLE CONDICIONAL DO................................................................................................................................. 17 EJEMPLO 9: RECORRIDO DE UNA MATRIZ .......................................................................................................................... 20 EJERCICIOS PROPUESTOS: ...................................................................................................................................................... 21 EJEMPLO 10: CREACIN DE LIBROS ...................................................................................................................................... 21 EJEMPLO 11: NOMBRA HOJAS ............................................................................................................................................. 21 EJEMPLO 12: CREA HOJA Y AGREGA DATOS ........................................................................................................................ 22 EJEMPLO 13: RELLENA LAS CELDAS DE A2 A A6 DE LA HOJA ACTIVA CON LOS PARES DEL 2 AL DIEZ. ......................... 23 EJEMPLO 14: CREA UNA BASE DE DATOS EN LA HOJA3 Y RELLENA LOS REGISTROS. ...................................................... 23

Visual Basic para Aplicaciones

Visual Basic para Aplicaciones


Ejemplos y Ejercicios
Ejemplo 1: Instruccin 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

Macro Entero

Entero

Entero > 0

El Dato es Positivo

Entero < 0

El Dato es Negativo

El Dato es igual a Cero

Fin

1 2 3 4 5 6 7 8

Sub Entero1() Dim Entero As Integer Entero = InputBox("Ingrese un nmero entero", "Cuadro de Ingreso de Datos") If Entero > 0 Then MsgBox "El dato es positivo", vbInformation + vbOKOnly, "Informacin sobre el dato ingresado" ElseIf Entero < 0 Then MsgBox "El dato es negativo", vbInformation + vbOKOnly, "Informacin sobre el dato ingresado" Else

Pgina 1

Visual Basic para Aplicaciones

1 2 3

MsgBox "El dato es igual a Cero", vbInformation + vbOKOnly, "Informacin sobre el dato ingresado" End If End Sub

Explicacin: Lnea 1: Sub es la instruccin que inicia la macro, la indicacin Entero1() corresponde al nombre que hemos asignado a dicha macro, este nombre puede cambiarse por cualquier otro que se crea conveniente. Lnea2: Declaramos una variable de nombre Entero mediante la instruccin Dim y le asignamos el tipo de Datos Integer (Entero) mediante la instruccin As Lnea 3: Mediante la instruccin InputBox solicitamos un dato al usuario y lo guardamos en la variable Entero. Lnea 4: Mediante la instruccin If iniciamos el bloque de decisin y comprobamos si valor guardado en la Variable Entero es mayor a cero y de ser as pasamos el control a la instruccin Then, que pasa el control a la lnea 5, sino pasa el control a la lnea 6, literalmente Si Entero >0 entonces Lnea 5: Mediante la instruccin Msgbox mostramos un mensaje donde se indica que el nmero es positivo. Lnea 6: Mediante la instruccin ElseIf se realiza otra comprobacin, en este caso si el valor guardado en Entero es menor a cero y de ser as se pasa el control a la instruccin Then que pasa el control a la lnea 7, sino pasa el control a la lnea 8. Lnea 7: Mediante la instruccin MsgBox se muestra un mensaje donde se indica que el nmero es negativo Lnea 8: Mediante la instruccin Else se indica que si no se ha cumplido ninguna de las condiciones anteriores (Entero >0 o Entero <0) se ejecute la lnea 9 Lnea 9: Mediante la instruccin MsgBox se muestra un mensaje indicando que el nmero es cero. Lnea 10: Mediante la instruccin End If acabamos con el bloque de decisin. Lnea 11: Mediante la instruccin End Sub acabamos con la macro.

Pgina 2

Visual Basic para Aplicaciones

Ejemplo 2: Instruccin 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

Macro Nombres

Nombre

Nombre = Alex

No te conozco + Nombre

Hola Alex!

Fin

1 2 3 4 5 6 7 8 9

Sub Nombres() Dim Nombre As String Nombre = InputBox("Ingrese su nombre", "Ingreso de Datos") If Nombre = "Alex" Then MsgBox "Hola " & Nombre & "!" Else MsgBox "No te conozco " & Nombre End If End Sub

Explicacin: Lnea 1: Sub es la instruccin que inicia la macro, la indicacin Nombres() corresponde al nombre que hemos asignado a dicha macro, este nombre puede cambiarse por cualquier otro que se crea conveniente. Lnea2: Declaramos una variable de nombre Nombre mediante la instruccin Dim y le asignamos el tipo de Datos String (Cadena de Texto) mediante la instruccin As Lnea 3: Mediante la instruccin InputBox solicitamos un nombre al usuario y lo guardamos en la variable Nombre.

Pgina 3

Visual Basic para Aplicaciones

Lnea 4: Mediante la instruccin If iniciamos el bloque de decisin y comprobamos si valor guardado en la Variable Nombre es Alex y de ser as pasamos el control a la instruccin Then, que pasa el control a la lnea 5, sino pasa el control a la lnea 6, literalmente Si Nombre es igual a Alex entonces Lnea 5: Mediante la instruccin Msgbox mostramos un mensaje Hola y le concatenamos el valor de Nombre. Lnea 6: Mediante la instruccin Else se indica que si no se ha cumplido la condicin anterior (Nombre = Alex) se ejecute la lnea 7 Lnea 7: Mediante la instruccin MsgBox se muestra un mensaje No te conozco y se le concatena el valor de Nombre. Lnea 8: Mediante la instruccin End If acabamos con el bloque de decisin. Lnea 9: Mediante la instruccin End Sub acabamos con la macro.

Pgina 4

Visual Basic para Aplicaciones

Ejemplo 3: Instruccin Condicional Solicita un monto, un periodo de tiempo, una tasa y devuelve el inters simple generado. A los datos ingresados se les hace comprobacin para determinar si son vlidos. Diagrama del Problema

Macro Inters Simple

Principal

Principal > 0

Datos no vlidos

Tiempo

Tiempo > 0

Datos no vlidos

Tasa

Tasa > 0

Datos no vlidos

Resultado = Principal * (Tasa / 100) * Tiempo

Principal

Fin

Pgina 5

Visual Basic para Aplicaciones

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

Sub InteresSimple() Dim Principal As Currency Dim Tiempo As Integer Dim Tasa As Single Dim Resultado As Single EntradaCapital: Principal = InputBox("Ingrese el capital a Invertir", "Clculo Principal") If Principal <= 0 Then MsgBox "Datos no vlidos", vbCritical + vbOKOnly, "Error en Datos" GoTo EntradaCapital End If EntradaTiempo: Tiempo = InputBox("Ingrese el periodo de tiempo") If Tiempo <= 0 Then MsgBox "Datos no vlidos", vbCritical + vbOKOnly, "Erro en Datos" GoTo EntradaTiempo End If EntradaTasa: Tasa = InputBox("Ingrese el valor de la tasa sin el signo de %", "Ingreso de Tasa") If Tasa <= 0 Then MsgBox "Datos no vlidos", vbCritical + vbOKOnly, "Error en Datos" GoTo EntradaTasa End If Resultado = Principal * (Tasa / 100) * Tiempo MsgBox "El inters generado es de " & Resultado, vbInformation + vbOKOnly, "Inters Generado" End Sub

Explicacin: Lnea 1: Sub es la instruccin que inicia la macro, la indicacin InteresSimple() corresponde al nombre que hemos asignado a dicha macro, este nombre puede cambiarse por cualquier otro que se crea conveniente. Lnea2: Declaramos una variable de nombre Principal mediante la instruccin Dim y le asignamos el tipo de Datos Currency (Moneda) mediante la instruccin As Lnea 3: Declaramos una variable de nombre Tiempo mediante la instruccin Dim y le asignamos el tipo de Datos Integer (Entero) mediante la instruccin As

Pgina 6

Visual Basic para Aplicaciones

Lnea 4: Declaramos una variable de nombre Tasa mediante la instruccin Dim y le asignamos el tipo de Datos Single (Simple) mediante la instruccin As Lnea 5: Declaramos una variable de nombre Resultado mediante la instruccin Dim y le asignamos el tipo de Datos Single (Simple) mediante la instruccin As Lnea 6: Asignamos una etiqueta EntradaCapital para luego hacer referencia a esa lnea de cdigo. Lnea 7: Mediante la instruccin InputBox solicitamos un capital al usuario y lo guardamos en la variable Principal. Lnea 8: Mediante la instruccin If iniciamos el bloque de decisin y comprobamos si valor guardado en la Variable Principal es menor o igual a cero y de ser as pasamos el control a la instruccin Then, que pasa el control a la lnea 9, sino pasa el control a la lnea 11, literalmente Si Principal es negativo o cero entonces Lnea 9: Mediante la instruccin MsgBox se muestra un mensaje de Datos no vlidos. Lnea 10: Mediante la instruccin GoTo pasamos el control a la etiqueta EntradaCapital (Lnea 6) Lnea 11: Mediante la instruccin End If acabamos con el bloque de decisin. Lnea 12: Asignamos una etiqueta EntradaTiempo para luego hacer referencia a esa lnea de cdigo. Lnea 13: Mediante la instruccin InputBox solicitamos un periodo de tiempo al usuario y lo guardamos en la variable Tiempo. Lnea 14: Mediante la instruccin If iniciamos el bloque de decisin y comprobamos si valor guardado en la Variable Tiempo es menor o igual a cero y de ser as pasamos el control a la instruccin Then, que pasa el control a la lnea 15, sino pasa el control a la lnea 17, literalmente Si Tiempo entonces Lnea 15: Mediante la instruccin MsgBox se muestra un mensaje de Datos no vlidos. Lnea 16: Mediante la instruccin GoTo pasamos el control a la etiqueta EntradaTiempo (Lnea 12) Lnea 17: Mediante la instruccin End If acabamos con el bloque de decisin. Lnea 18: Asignamos una etiqueta EntradaTasa para luego hacer referencia a esa lnea de cdigo. Lnea 19: Mediante la instruccin InputBox solicitamos un tasa de inters al usuario y lo guardamos en la variable Tasa. es negativo o cero

Pgina 7

Visual Basic para Aplicaciones

Lnea 20: Mediante la instruccin If iniciamos el bloque de decisin y comprobamos si valor guardado en la Variable Tasa es menor o igual a cero y de ser as pasamos el control a la instruccin Then, que pasa el control a la lnea 21, sino pasa el control a la lnea 23, literalmente Si Tasa es negativo o cero entonces Lnea 21: Mediante la instruccin MsgBox se muestra un mensaje de Datos no vlidos. Lnea 22: Mediante la instruccin GoTo pasamos el control a la etiqueta EntradaTasa (Lnea 18) Lnea 23: Mediante la instruccin End If acabamos con el bloque de decisin. Lnea 24: Asignamos a la variable Resultado el valor resultante de la frmula de inters simple (C*r*t), siendo en este caso C=Capital, r= (Tasa/100) y t = Tiempo Lnea 25: Mediante la instruccin MsgBox se muestra un mensaje con el valor de la variable Resultado. Lnea 26: Mediante la instruccin End Sub acabamos con la macro.

Ejercicios Propuestos 1) Crear una macro que solicite dos nmeros enteros y devuelva un mensaje indicando cul es el mayor. 2) Crear una macro que solicite tres nmeros y devuelva un mensaje con los nmeros ordenados de manera descendente (de mayor a menor). 3) Crear una macro que solicite el capital invertido(Principal), el periodo de inversin y el capital obtenido al final del periodo y devuelva un mensaje con la tasa aplicada para obtener dicho capital.(Inters simple) Ejemplo 4: Instruccin Condicional Solicita un dato y devuelve un mensaje indicando si es positivo, negativo o cero. Diagrama del Problema Ver Ejemplo 4 1 2 3 4 5 6 7 8 9 10 11 Sub Numeros() Dim Valor1 As Double Valor1 = InputBox("Ingrese un nmero", "Ingreso de Datos") Select Case Valor1 Case Is > 0 MsgBox "El valor es nmero positivo", vbInformation + vbOKOnly, "Informacin" Case Is < 0 MsgBox "El valor es nmero negativo", vbInformation + vbOKOnly, "Informacin" Case Else MsgBox "El valor es cero", vbInformation + vbOKOnly, "Informacin" End Select

Pgina 8

Visual Basic para Aplicaciones

End Sub

Explicacin: Lnea 1: Sub es la instruccin que inicia la macro, la indicacin Numeros() corresponde al nombre que hemos asignado a dicha macro, este nombre puede cambiarse por cualquier otro que se crea conveniente. Lnea2: Declaramos una variable de nombre Valor1 mediante la instruccin Dim y le asignamos el tipo de Datos Double (Doble) mediante la instruccin As Lnea 3: Mediante la instruccin InputBox solicitamos un dato al usuario y lo guardamos en la variable Valor1. Lnea 4: Mediante la instruccin Select Case iniciamos el bloque de decisin y comprobamos las diversas

posibilidades para el valor guardado en la Variable Valor1, literalmente Seleccionar el caso para Valor1 Lnea 5: Mediante la instruccin Case Is se determina si el valor guardado en Valor1 es mayor a Cero y de ser as se pasa el control a la lnea 6, en caso contrario se pasa a la lnea 7. Lnea 6: Mediante la instruccin Msgbox mostramos un mensaje donde se indica que el nmero es positivo. Lnea 7: Mediante la instruccin Case Is se determina si el valor guardado en Valor1 es menor a Cero y de ser as se pasa el control a la lnea 8, en caso contrario se pasa a la lnea 9. Lnea 8: Mediante la instruccin MsgBox se muestra un mensaje donde se indica que el nmero es negativo Lnea 9: Mediante la instruccin Case Eslse se indica que si el valor guardado en Valor1 no cumple ninguno de los casos anteriores se pasa el control a la lnea 10. Lnea 10: Mediante la instruccin MsgBox se muestra un mensaje indicando que el nmero es cero. Lnea 11: Mediante la instruccin End Select acabamos con el bloque de decisin. Lnea 12: Mediante la instruccin End Sub acabamos con la macro.

Pgina 9

Visual Basic para Aplicaciones

Ejemplo 5: Instruccin Condicional Muestra una lista de los das de la semana, solicita que se seleccione uno de ellos y muestra el mensaje Das solicitado es Diagrama del Problema

Macro Das Semana

1. 2. 3. 4. 5. 6. 7.

Domingo Lunes Martes Mircoles Jueves Viernes Sbado

Da

Dia 1 y Dia 7

Datos No vlidos

Dia 1 2 3 4 5 6 7

Domingo

Lunes

Martes

Mircoles

Jueves

Viernes

Sbado

Fin

Pgina 10

Visual Basic para Aplicaciones

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

Sub DiasSemana() Dim Dia As Integer Dim Dias As String IngresoDias: Dia = InputBox("1-Domingo" & Chr(13) & "2-Lunes" & Chr(13) & "3-Martes" & Chr(13) & "4Mircoles" & Chr(13) & "5-Jueves" & Chr(13) & "6-Viernes" & Chr(13) & "7-Sbado" & Chr(13) & "Ingrese el nmero correspondiente al da de la semana", "Ingreso de Datos") If Dia < 1 Or Dia > 7 Then MsgBox "Datos no vlidos, ingrese un nmero 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 = "Mircoles" Case 5 Dias = "Jueves" Case 6 Dias = "Viernes" Case 7 Dias = "Sbado" End Select MsgBox "Da seleccionado es " & Dias, vbExclamation + vbOKOnly, "Das" End Sub

Explicacin Lnea 1: Sub es la instruccin que inicia la macro, la indicacin DiasSemana() corresponde al nombre que hemos asignado a dicha macro, este nombre puede cambiarse por cualquier otro que se crea conveniente. Lnea 2: Declaramos una variable de nombre Dia mediante la instruccin Dim y le asignamos el tipo de Datos Integer (Entero) mediante la instruccin As

Pgina 11

Visual Basic para Aplicaciones

Lnea 3: Declaramos una variable de nombre Dias mediante la instruccin Dim y le asignamos el tipo de Datos String (Cadena de Texto) mediante la instruccin As Lnea 4: Asignamos una etiqueta IngresoDias para luego hacer referencia a esa lnea de cdigo. Lnea 5, 6 y 7: Mediante la instruccin InputBox mostramos una lista al usuario y solicitamos un dato guardndolo en la variable Dia. Lnea 4: Mediante la instruccin Select Case iniciamos el bloque de decisin y comprobamos las diversas

posibilidades para el valor guardado en la Variable Valor1, literalmente Seleccionar el caso para Valor1 Lnea 5: Mediante la instruccin Case Is se determina si el valor guardado en Valor1 es mayor a Cero y de ser as se pasa el control a la lnea 6, en caso contrario se pasa a la lnea 7. Lnea 6: Mediante la instruccin Msgbox mostramos un mensaje donde se indica que el nmero es positivo. Lnea 7: Mediante la instruccin Case Is se determina si el valor guardado en Valor1 es menor a Cero y de ser as se pasa el control a la lnea 8, en caso contrario se pasa a la lnea 9. Lnea 8: Mediante la instruccin MsgBox se muestra un mensaje donde se indica que el nmero es negativo Lnea 9: Mediante la instruccin Case Eslse se indica que si el valor guardado en Valor1 no cumple ninguno de los casos anteriores se pasa el control a la lnea 10. Lnea 10: Mediante la instruccin MsgBox se muestra un mensaje indicando que el nmero es cero. Lnea 11: Mediante la instruccin End Select acabamos con el bloque de decisin. Lnea 12: Mediante la instruccin End Sub acabamos con la macro.

Pgina 12

Visual Basic para Aplicaciones

Ejemplo 6: Bucle for Solicita un nmero entero y muestra el mensaje Bucle nmero . Diagrama del Problema

Sub Bucle Mensaje

Indice

Indice >0

Datos Incorrectos

Inicio x= 1 hasta x= Indice

Bucle Nmero + x

Fin de Bucle x

Fin

1 2 3 4 5 6 7 8 9 10 11

Sub BucleMensaje() Dim Indice As Integer Ingreso: Indice = InputBox("Ingrese un nmero entero positivo", "Ingreso de Datos") If Indice <= 0 Then MsgBox "Nmero no vlido, ingrese un nmero positivo", vbCritical + vbOKOnly, "Error en Datos" GoTo Ingreso End If For x = 1 To Indice MsgBox "Bucle nmero " & x Next x Pgina 13

Visual Basic para Aplicaciones

End Sub

Explicacin Lnea 1: Sub es la instruccin que inicia la macro, la indicacin BucleMensaje() corresponde al nombre que hemos asignado a dicha macro, este nombre puede cambiarse por cualquier otro que se crea conveniente. Lnea 2: Declaramos una variable de nombre Indice mediante la instruccin Dim y le asignamos el tipo de Datos Integer (Entero) mediante la instruccin As Lnea 3: Asignamos una etiqueta Ingreso para luego hacer referencia a esa lnea de cdigo. Lnea 4: Mediante la instruccin InputBox solicitamos un entero al usuario y lo guardamos en la variable Indice. Lnea 5: Mediante la instruccin If iniciamos el bloque de decisin y comprobamos si valor guardado en la Variable Indice es menor o igual a cero y de ser as pasamos el control a la instruccin Then, que pasa el control a la lnea 6, sino pasa el control a la lnea 8, literalmente Si Indice es negativo o cero entonces Lnea 6: Mediante la instruccin MsgBox se muestra un mensaje de Datos no vlidos. Lnea 7: Mediante la instruccin GoTo pasamos el control a la etiqueta Ingreso (Lnea 3) Lnea 8: Mediante la instruccin End If acabamos con el bloque de decisin. Lnea 9: Mediante la instruccin For se inicia un bucle inicia con un contador x = 1 aumentando en 1 y mediante la instruccin To se indica que finaliza cuando x tenga el mismo valor que Indice. Lnea 10: Mediante la instruccin MsgBox se muestra un mensaje en el cual se indica el valor de la x para cada repeticin del bucle. Lnea 11: Mediante la instruccin Next se aumenta el valor de la x en 1 y se devuelve el control a la lnea 10 Lnea 12: Mediante la instruccin End Sub acabamos con la macro.

Pgina 14

Visual Basic para Aplicaciones

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 1 2 3 4 5 6 7 8 9 10 11 12 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
Fin de bucle x

Maccro Llena Matriz

Bucle inicio en x=0 hasta x= 3

MiMatriz(x)

Explicacin Lnea 1: Sub es la instruccin que inicia la macro, la indicacin LlenaMatrix() corresponde al nombre que hemos asignado a dicha macro, este nombre puede cambiarse por cualquier otro que se crea conveniente. Lnea 2: Declaramos una Matriz de nombre MiMatriz de cuatro elementos mediante la instruccin Dim y le asignamos el tipo de Datos String (Cadena de Texto) mediante la
Fin bucle j Resultado= Resultado + MiMatriz(j) Bucle Inicia con j=0 hasta j=3

instruccin As Lnea 3: Declaramos una variable de nombre Resultado mediante la instruccin Dim y le
Resultado

asignamos el tipo de datos String ( Cadena de Texto) mediante la instruccin As. Lnea 4: Mediante la instruccin For se inicia un bucle inicia con un contador x = 0 aumentando
Fin

en 1 y mediante la instruccin To se indica que finaliza cuando x tenga el valor 3. Lnea 5: Mediante la instruccin InputBox solicitamos una referencia al usuario y lo guardamos como el elemento x de la matriz MiMatriz. Esta instruccin se repite 4 veces gracias al bucle, as se llenan cada uno de los elementos de la matriz. Lnea 6: Mediante la instruccin Next se aumenta el valor de la x en 1 y se devuelve el control a la lnea 5.

Pgina 15

Visual Basic para Aplicaciones

Lnea 7: Mediante la instruccin For se inicia un bucle inicia con un contador j = 0 aumentando en 1 y mediante la instruccin To se indica que finaliza cuando j tenga el valor 3. Lnea 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 funcin Chr con el parmetro 13 es para ingresar un retorno de carro para que aparezcan los resultado en una lista y no en la misma lnea de mensaje cuando se muestren en pantalla. Lnea 9: Mediante la instruccin Next se aumenta el valor de la j en 1 y se devuelve el control a la lnea 8 Lnea 10: Mediante la instruccin MsgBox se muestra un mensaje con el valor de la variable Resultado. Lnea 11: Mediante la instruccin End Sub acabamos con la macro.

Pgina 16

Visual Basic para Aplicaciones

Ejemplo 8: Bucle Condicional Do Juego donde se le pide adivinar un nmero entre 1 y 100, en cinco intentos. Diagrama del Problema

Juego Adivina

ElNumero aleatorio de 1 a 100

Contador=1

Has perdido, el nmero es + ElNumero

Contador < 6

Contador + 1

MiNumero

MiNumero = ElNumero

MiNumero < ElNumero

El nmero buscado es mayor

Has adivinado el numero en +Contador + intentos

El nmero buscado es menor

Fin

Pgina 17

Visual Basic para Aplicaciones

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

Sub JuegoAdivina() Dim Contador As Integer Dim MiNumero As Integer Dim ElNumero As Integer Contador = 1 Randomize ElNumero = Int((100 * Rnd) + 1) Do While Contador < 6 MiNumero = InputBox("Ingrese un nmero de 1 a 100") If MiNumero = ElNumero Then MsgBox "Has adivinado en nmero en " & Contador & " intentos" Exit Do Else Contador = Contador + 1 If MiNumero < ElNumero Then MsgBox "El nmero buscado es mayor a " & MiNumero, vbInformation + vbOKOnly, "Salida de Datos" Else MsgBox "El nmero buscado es menor a " & MiNumero, vbInformation + vbOKOnly, "Salida de Datos" End If End If Loop If MiNumero <> ElNumero Then MsgBox "Perdiste!" & Chr(13) & "El Nmero buscado era " & ElNumero End Sub Esta instruccin permite generar un nmero al azar Int transforma en entero y Rnd es el nmero generado por Randomize

Pgina 18

Visual Basic para Aplicaciones

Pgina 19

Visual Basic para Aplicaciones

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

1 2 3 4 5

Sub ListaNombres() Dim Nombres(4) As String Dim Nombre As String Dim NombreComprueba As String NombreComprueba = ""

Pgina 20

Visual Basic para Aplicaciones

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

'Ingreso de los nombres en la matriz 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 Bsqueda" 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 Bsqueda" End Sub

Ejercicios Propuestos: 1) Crear una macro que solicite dos nmeros enteros y devuelva un listado de todos los nmeros comprendidos entre ellos. 2) Crear una macro que solicite cuatro nombres y devuelva el mensaje Hola, {Nombre}

Ejemplo 10: Creacin de libros La siguiente macro crea un libro nuevo y oculta sus dos ltimas hojas. 21 22 23 24 25 26 27 Ejemplo 11: Nombra Hojas Sub CreaLibro() Dim LibroCreado As Workbook Set LibroCreado = Workbooks.Add LibroCreado.Worksheets(2).Visible = False LibroCreado.Worksheets(3).Visible = False End Sub

La siguiente macro crea un libro nuevo y da el nombre de Principal, Datos Borrador, Datos Fijos a sus respectivas hojas.

Pgina 21

Visual Basic para Aplicaciones

1 2 3 4 5 6 7 8 9

Sub NombraHojas() Dim LibroCreado As Workbook Set LibroCreado = Workbooks.Add With LibroCreado .Worksheets(1).Name = "Principal" .Worksheets(2).Name = "Datos Borrador" .Worksheets(3).Name = "Datos Fijos" End With End Sub Ejemplo 12: Crea hoja y agrega datos La siguiente macro solicita diez datos numricos, 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 correspondiente

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

Sub 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 j End Sub Caso II: Los Datos se van agregando a como se ingresan.

28 29 30 31 32 33 34 35 36

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

Pgina 22

Visual Basic para Aplicaciones

1 2 3 4 5 6

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 x End Sub

Ejemplo 13: Rellena las celdas de A2 a A6 de la hoja activa con los pares del 2 al diez. 7 8 9 10 11 12 13 14 Sub rellenar() Dim Fila As Integer Fila = 2 For i = 2 To 10 Step 2 ActiveSheet.Cells(Fila, 1).Value = i Fila = Fila + 1 Next i End Sub

Ejemplo 14: Crea una base de datos en la Hoja3 y rellena los registros. 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 'Activar casilla B5 'Para poner negrita y centrar la cabecera Range("B4:E4").Select With Selection .Font.Bold = True .HorizontalAlignment = xlCenter End With 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

Pgina 23

Visual Basic para Aplicaciones

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

ActiveSheet.Range("B5").Activate Nombre = InputBox("Entre el Nombre (Return para Terminar) : ", "Nombre") 'Mientras la variable Nombre sea diferente a cadena vaca 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 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 With End Sub

Pgina 24

Das könnte Ihnen auch gefallen