Está en la página 1de 5

4/24/2014 ENI Training - Libro online

http://www.eni-training.com/client_net/mediabook.aspx?idR=71521 1/5
Sub Introducir_Numero ()
Dim strRep
Do
strRep = InputBox("Introduzca un nmero > 100")
Loop While (Not IsNumeric(strRep) Or strRep <= 100)
End Sub
Estructuras en ciclo
Las estructuras en ciclos (o repetitivas) permiten repetir la ejecucin de un conjunto de instrucciones.
Se distinguen varios tipos de estructuras en ciclo:
Do...Loop
While...Wend
For...Next
For Each...Next
Do...Loop y While...Wend repiten las operaciones en funcin de una cierta condicin, mientras
queFor...Next repite las operaciones una cantidad de veces determinada por un contador.
For Each...Next permite recorrer los elementos de una coleccin.
1. Instruccin Do...Loop
Ejecuta un bloque de instrucciones un nmero indeterminado de veces.
Sintaxis 1
Las instrucciones se ejecutan mientras que la condicin devuelve el valor True.
Do While <Condicin>
<Instrucciones>
Loop
Sintaxis 2
Las instrucciones se ejecutan una primera vez sin condicin y luego mientras la condicin devuelva
True.
Do
<Instrucciones>
Loop While <Condicin>
Ejemplo
El siguiente cdigo solicita al usuario que escriba un nmero mientras que el valor introducido no sea
numrico o superior a 100.
Sintaxis 3
Las instrucciones se ejecutan hasta que la condicin toma el valor True (mientras que la condicin
devuelva el valor False).
4/24/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=71521 2/5
Sub Introducir_Numero()
Dim strRep
Do
strRep = InputBox("Introduzca un nmero > 100")
Loop Until (IsNumeric(strRep) And strRep > 100)
End Sub
Sub Introducir_Precio()
Pide la introduccin de un precio mientras que
sea vaco o incorrecto
While IsEmpty(Range("C9")) Or Not IsNumeric(Range("C9"))
Range("C9") = InputBox("Introduzca el precio del producto")
Wend
End Sub
Do Until <Condicin>
<Instrucciones>
Loop
Sintaxis 4
Las instrucciones se ejecutan una primera vez sin condicin y luego hasta que la condicin devuelva el
valor True.
Do
<Instrucciones>
Loop Until <Condicin>
Ejemplo
El siguiente cdigo solicita al usuario que escriba un nmero hasta que el valor introducido sea numrico y
mayor que 100.
2. Instruccin While...Wend
Ejecuta una serie de instrucciones en un ciclo mientras se cumple la condicin especificada.
Sintaxis
While <condicin>
<instrucciones>
Wend
Ejemplo
3. Instruccin For...Next
Ejecuta un bloque de instrucciones segn el valor de un contador.
For <contador>=<inicio> To <fin> [Step <incremento>]
<instrucciones>
Next
Ejemplo
El siguiente cdigo muestra un procedimiento que inserta los totales trimestrales en una matriz de
4/24/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=71521 3/5
Sub Totales_Trimestrales()
Dim nTrim As Integer
Dim i As Integer
Dim Celda as Range
Inserta los totales trimestrales cada 3 meses,
los pone en negrita con un borde
nTrim = 1
For i = 5 To 17 Step 4
If Left(Cells(2, i), 4) <> "Trim" Then
Cells(2, i).EntireColumn.Insert
Cells(2, i) = "Trim. " & nTrim
nTrim = nTrim + 1
Range(Cells(3, i), Cells(11, i)).Select
Selection.FormulaR1C1 = "=SUM(RC[-3]:RC[-1])"
Range(Cells(2, i), Cells(11, i)).Font.Bold = True
For Each Celda In Range(Cells(2, i), Cells(11, i))
CeldaBorderAround ColorIndex:=1, Weight:=xlThin
Next Celda
End If
Range("A1").Activate
Next
End Sub
________________________________________________________________
Sub Suprime_Totales_Trimestrales()
Dim i As Integer

Suprime los totales trimestrales si ya los haba
For i = 5 To 17
If Left(Cells(2, i), 4) = "Trim" Then
Cells(2, i).EntireColumn.Delete
End If
Next i
End Sub
Sub Muestra_Colores()
Dim i As Integer
With Sheets("Colores")
For i = 1 To 56
Cells(i, 1).Interior.ColorIndex = i
Cells(i, 2) = i
Next i
End With
End Sub
resultados mensuales; adems, el procedimiento elimina los totales si ya los haba.
Este procedimiento muestra en la hoja de clculo "Colores", los diferentes colores de relleno y el valor de la
propiedad ColorIndex correspondiente.
4. Instruccin For Each...Next
Ejecuta un bloque de instrucciones para cada elemento de una coleccin de objetos o de una matriz.
For Each <elemento> In <Grupo>
<Instrucciones>
Next <elemento>
4/24/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=71521 4/5
Sub Colores_Celda()
Dim ZonaaModificar As Range
Dim Celda As Range

Aplica un color en funcin del valor de la celda
Set ZonaaModificar = Range("B3:Q11")
For Each Celda In ZonaaModificar
Select Case Celda
Case Is < 1000
Celda.Font.Color = RGB(150, 150, 250)
Case Is < 5000
Celda.Font.Color = RGB(90, 100, 250)
Case Is < 10000
Celda.Font.Color = RGB(10, 20, 250)
Case Is < 20000
Celda.Font.Color = RGB(5, 10, 175)
Case Else
Celda.Font.Color = RGB(5, 5, 100)
End Select
Next
End Sub
Sub Paginacion()
Define la paginacin de la hoja activa
Redimensiona las columnas y procede con la impresin
With ActiveSheet
With .PageSetup
.Orientation = xlLandscape
.LeftMargin = Application.InchesToPoints(0.5)
.RightMargin = Application.InchesToPoints(0.5)
.TopMargin = Application.InchesToPoints(0.5)
.BottomMargin = Application.InchesToPoints(0.5)
.LeftHeader = ""
.CenterHeader = "&A"
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = "Page &P"
.RightFooter = ""
End With
.Columns("A:Q").EntireColumn.AutoFit
.PrintOut
End With
End Sub
Ejemplo
Este procedimiento aplica un color de letra a las celdas en funcin de su contenido.
Ejecucin de varias acciones sobre un objeto
With objeto
<Instrucciones>
End With
Ejemplo
5. Salir de las estructuras de control
4/24/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=71521 5/5
Sub Introducir_Fecha()
Dim strVal
Fuerza la introduccin de una fecha en la celda A1
Si no se introduce ningn valor: se sale del ciclo
Range("A1") = ""
Do While Not IsDate(Range("A1"))
strVal = InputBox("Escriba una fecha")
If strVal <> "" Then
If IsDate(strVal) Then Range("A1") = strVal
Else
Exit Do
End If
Loop
End Sub
La instruccin Exit For permite salir directamente de un ciclo For o For Each, mientras que Exit Dosale
directamente de un ciclo Do.
Ejemplo

También podría gustarte