Está en la página 1de 16

Anlisis de Datos Avanzados

Ciclos: For | Next


Sintaxis:

For Contador = Principio To Fin [Step valor]


[Instrucciones]
[Exit For]
Next [Contador]

Ejemplo:

Desarrolle un programa en Excel VBA que sea capaz de obtener el valor de:

Despliegue el resultado mediante un cuadro de mensaje.

UANL 2017
Anlisis de Datos Avanzados
Ciclos: For | Next
El diagrama de flujo para resolver lo anterior sera:

INICIO
Aqu se sabe de manera
clara cundo terminar el
ciclo
SUMA=0 CONTADOR = 1

SUMA = SUMA + CONTADOR =


RAZ(CONTADOR) CONTADOR + 1

no CONTADOR >
100?

IMPRIME SUMA FIN

UANL 2017
Anlisis de Datos Avanzados
Ciclos: For | Next

El programa quedara implementado de la siguiente forma:

Sub SumaRaicesCuadradas()
Dim Suma as Single, Contador as Integer
Suma = 0
For Contador = 1 to 100
Suma = Suma + SQRT(Contador)
Next Contador
MsgBox La suma asciente a: & Suma
End Sub

UANL 2017
Anlisis de Datos Avanzados
Condicionales: If | Then

Sintaxis: Ejemplo:

If condicin_1 Then Sub Saludos()


[Instrucciones] If Time < 0.5 Then
ElseIf condicin_2 Then Range(A1) = Buenos das
[Instrucciones] ElseIf Time < 0.5 Then
... Opcional Range (A1) = Buenas tardes
ElseIf condicin_n Then Else
[Instrucciones] Range(A1) = Buenas noches
Else End If
[Instrucciones] End Sub
End If

UANL 2017
Anlisis de Datos Avanzados
Ciclos: For | Next

Sub SumaRaicesCuadradas()
Dim Suma as Single, Contador as Integer
Suma = 0
For Contador = 1 to 100 Step 2
Suma = Suma + SQRT(Contador)
If Suma > 20 Then
Exit For
End If
Next Contador
Range(B1) = Suma Incremento
End Sub

Condicin Salida del


de salida ciclo

UANL 2017
Anlisis de Datos Avanzados
Ciclos: For Each | Next

Sintaxis: Ejemplo:

For Each Elemento In Grupo Sub ConvierteMaysculas()


[Instrucciones] For Each Cell In Selection
[Exit For] Cell.Value = Ucase(Cell.Value)
Next Elemento Next Cell
End Sub

La referencia a un objeto en el
ciclo facilita la programacin

UANL 2017
Anlisis de Datos Avanzados
Condicionales: Select Case

Ejemplo:

Sub Saludos2()
Expresin de prueba
Select Case Time
Case Is < 0.5
Range(A1) = Buenos das
Case 0.5 to 0.75
Range (A1) = Buenas tardes
Case Else
Range(A1) = Buenas noches
End Select
End Sub

UANL 2017
Anlisis de Datos Avanzados
Ciclos: While| Wend , Do | Loop While
Considere el siguiente algoritmo para una hoja de clculo:

INICIO

Est vaca
la celda s FIN
activa?

no

Desplazarse a la
celda inferior
siguiente

Aqu no se sabe con certeza cundo ocurre el final del programa.

UANL 2017
Anlisis de Datos Avanzados
Ciclos: While| Wend , Do | Loop While

Ejemplo: Ejemplo:

Sub WhileEndDemo() Sub DoWhileDemo()


While Not IsEmpty(ActiveCell) If Not IsEmpty(ActiveCell) Then
ActiveCell.Offset(1,0).Select Do
Wend ActiveCell.Offset(1,0).Select
Equivalente
End Sub Loop While Not IsEmpty(ActiveCell)
End If
End Sub

UANL 2017
Anlisis de Datos Avanzados
Ciclos: While| Wend , Do | Loop While
Revisemos ahora el siguiente ejemplo:

INICIO

Obtener
NOMBREUSUARIO

no
Tiene
NOMBREUSUARIO
alguna letra?

NOMBREUSUARIO =
Imprime FIN
Primera palabra de
NOMBREUSUARIO
NOMBREUSUARIO

UANL 2017
Anlisis de Datos Avanzados
Ciclos: Do Until| Loop , Do | Loop Until

Sintaxis: Sintaxis:

Do
Do [Until Condicin] [Instrucciones]
[Instrucciones] [Exit Do]
[Exit Do] Loop [Until Condicin]
Loop

Ejemplo:
Sub InputBoxDemo2()

Do Until NombreUsuario <> Nombre


NombreUsuario = InputBox(Escribe tu nombre completo: , Identificacin, Nombre)
Loop
PrimerEspacio = InStr(NombreUsuario, ) Posicin de nombre de pila
NombreUsuario = Left(NombreUsuario , PrimerEspacio Extrae nombre de pila
MsgBox Hola & NombreUsuario
End Sub

UANL 2017
Anlisis de Datos Avanzados
Prctica
Retome el ejemplo anterior, y modifique el programa de manera que si el usuario al
capturar sus datos inicia con un espacio, el resultado slo muestre el mensaje con el
nombre de pila. Asimismo, si se introduce una cadena con caracteres sea detectado
regrese a la ventana de captura original:

UANL 2017
Anlisis de Datos Avanzados
La instruccin Set

Sub ManejaRango() Sub ManejaRango2()


Dim Cell as Object Dim Cell as Object, Contador as Integer
Dim Contador as Integer Set Grupo = Range("B2:B4")
Contador = 0 Contador = 0
For Each Cell In For Each Cell In Grupo
Range("Grupo") If Cell.HasFormula = True then
If Cell.HasFormula = True then Contador = Contador + 1
Contador = Contador + 1 End If
End If Next Cell
Next Cell Range("A1") = contador
Range("A1") = contador End Sub
End Sub

UANL 2017
Anlisis de Datos Avanzados
Proyecto
Usted ha sido contratado por una empresa para sistematizar un proceso de valuacin
de existencias. Dado que la gerencia maneja dos bases de datos separadas para el
costo de las mercancas y el inventario, el proyecto consiste en generar un nuevo
archivo que exclusivamente muestre los productos y sus valores (sin las cantidades),
dado que se trata de informacin confidencial.

Utilice VBA para lograr este propsito.

Archivos:
Precios.xls
Existencias.xls

UANL 2017
Anlisis de Datos Avanzados
Proyecto
Restricciones:

1. El usuario del programa no tiene acceso a las bases de datos fuente. Por
consiguiente, la nica ventana que debe aparecer una vez terminada la ejecucin
es aquella con los resultados.
2. El nmero de renglones en cada base es variable, pues est sujeto a futuras
actualizaciones que deben ser transparentes al usuario.
3. La subrutina (macro) que desarrolle deber ser invocada desde la hoja de
resultados con un botn, el cual es responsable de limpiar y recalcular la
informacin cada vez que sea necesario.

UANL 2017
Anlisis de Datos Avanzados
Proyecto
Sugerencia:

Utilice en la mayor medida de lo posible los conceptos de VBA vistos hasta el momento
con el fin de facilitar el desarrollo de esta aplicacin.

Apyese en la funcin de Hoja de Clculo VLOOKUP ("Vertical Look Up") para la


realizacin de bsquedas de valores.

UANL 2017