Ej.:
Private Sub Command1_Click( )
Dim Control as Long
On Error Resume Next
Control = Text1.Text
Form1.BackColor = vbWhite
Do Until Control = 0
Label2.Caption = Valor: & Control
If Form1.BackColor = vbWhite Then
Form1.BackColor = vbRed
Else
Form1.BackColor = vbWhite
End If
Control = Text1.Text
DoEvents
Loop
MsgBox Loop completado
End Sub
2. Do While:
ExcelAvanzado.com
Un juego de nios ...
Pgina principal
Curso
Macros
Suscripcin
estructura FOR ... NEXT, pero cuando desconocemos el nmero de veces que se
ha de repetir el bucle debemos ir a una estructura del tipo DO WHILE ... LOOP, o
alguna de sus variantes. Esto es lo que vamos a ver en esta ocasin.
....
Loop
Esta estructura permite hacer un bucle que se repetir mientras se siga
cumpliendo la condicin. El flujo del programa se ejecuta de arriba hacia abajo. Al
llegar a la linea superior del bucle se analiza la condicin y si es verdadera se
ejecutan las lneas interiores del bucle. Al llegar al Loop se devuelve el flujo del
programa al inicio, y se vuelve a analizar la condicin. Este proceso se repite
mientras la condicin sea verdadera, por tanto, en algn momento se debe
producir algn cambio en las sentencias interiores del bucle que hagan que la
condicin se transforme en falsa para que no se siga repitiendo el bucle de forma
indefinida. En el momento en el que la condicin es falsa el bucle ya no se ejecuta
y se devuelve el control del flujo del programa a las sentencias que se encuentres
debajo del Loop.
Hemos diseado un ejemplo donde generamos nmeros aleatorios entre 1 y 100, y
se los asignamos a la variable i.
i = Int(Rnd * 100) + 1
Con la variable s vamos a sumar los valores que va tomando i. Esto es lo que se
denomina un ACUMULADOR, que va aadiendo valores a la variable s.
s=s+i
Esta expresin no se debe interpretar como lo haramos en matemticas. En
programacin el signo igual indica que lo que hay a la derecha se va a asignar a la
variable que hay a la izquierda.
La interpretacin correcta es que tomamos el antiguo valor de la variable s y le
sumamos lo que vale i, y esa suma se asigna al nuevo valor que ahora toma la
variable s.
Los valores que van tomando las variables i y s se escriben en las columnas 2 y 3,
que son las columnas B y C.
Para que la fila vaya cambiando en el instruccin Cells(fila, columna) hemos
creado una variable que precisamente se llama fila y que dentro del bucle, y al final
de ste, incrementa uno.
fila=fila+1
De esta forma, la filas se van incrementando de uno en uno a medida que el bucle
va haciendo sus ciclos. Esto es lo que en informtica se llama CONTADOR.
La condicin que hace que se repita el bucle es s<1000, lo que provoca que el
bucle se repita MIENTRAS se cumpla que s, que es el acumulado de la variable i,
sea inferior a 1000.
Hoja 2
En la Hoja2 disponemos de una tabla y deseamos desplazarnos por ella hasta que
encontremos una celda vaca.
Sub Desplaza()
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Activate
Loop
End Sub
Nos situamos en una celda que contiene datos, por ejemplo, la celda B4 y
ejecutamos la macro. al finalizar la ejecucin el cursor aparecer en la primera
celda vaca que encuentre en la columna B.
La lnea
ActiveCell.Offset(1, 0).Activate
lo que hace es desplaze el cursor una celda hacia abajo respecto a su posicin
actual. Como esta lnea esta dentro de un bucle se ejecutar repetidamente hasta
que el flujo del programa se salga de bucle.
El bucle se repite mientras la celda activa no sea una celda vaca. Esto supone,
que el cursor se vaya desplazando por la columna donde se dejara inicialmente y
que no pare de bajar hasta que se encuentre con una celda vaca.
Este bucle es muy til para encontrar en una base de datos el final de la tabla.
Para ello, debemos situar el cursor en la columna donde se encuentre el campo
llave o campo clave. Esto ha de ser as ya que sabemos que al tratarse de una
variable sin espacios vacos el cursor bajar hasta el final.
Prctica (Hoja 3)
Le invitamos a crear un cdigo que se desplace hacia arriba y que se site en una
tabla en la cabecera de la columna donde se entrontrara inicialmente el cursor.
Estructuras de contro
NDIC
Una de las razones por las que escribimos un programa es para automatizar la ejecucin
de tareas repetitivas segn alguna condicion. Esta funcionalidad es provista por las
estructuras de control de ciclos o repeticin. Estas estructuras hacen posible que una parte
del programa se repita un nmero determinado de veces, dependiendo de alguna
condicin.
Contenido
[ocultar]
1 FOR NEXT
2 FOR EACH IN
3 DO LOOP
4 REPEAT UNTIL
5 WHILE - WEND
FOR NEXT[editar]
Se repite un numero predeterminado de veces.
Sintaxis
FOR Variable = Expression TO Expression [STEP Expression] ... NEXT 'Counter loop.
FOR iCount = 1 TO 20 STEP 3
PRINT iCount & " ";
NEXT
Sintaxis
DO LOOP[editar]
Este estructura de control de ciclosse repetir mientras que una determinada condicin
sea cierta. La condicin puede ser evaluada al inicio o al final de la estructura dependiendo
si se usa DO WHILE - LOOP o DO - LOOP UNTIL. Si la condicin se evala al comienzo
de la estructura (condicin de entrada) el bloque de instrucciones pude no ejecutarse
ninguna vez, si la condicin de entrada es inicialmente falsa. Por el contrario, si la
condicin se evala al final de la estructura (condicin de salida) el bloque de instrucciones
se ejecutar al menos una vez, aunque la condicin de salida ya sea cierta al entrar en la
estructura.
Sintaxis
REPEAT UNTIL[editar]
El bloque de acciones se repetir hasta que una determinada condicin sea cierta. La
condicin se evala al final de la estructura (condicin de salida). Esto implica que el
bloque de instrucciones se ejecutar al menos una vez, aunque la condicin de salida ya
sea cierta al entrar en la estructura.
Sintaxis
WHILE - WEND[editar]
El bloque de acciones se repetir mientras que una determinada condicin sea cierta. La
condicin se evala al comienzo de la estructura (condicin de entrada). Esto implica que
el bloque de instrucciones pude no ejecutarse ninguna vez, si la condicin de entrada es
inicialmente falsa.
Sintaxis