domingo, 20 de abril de 2008

For Each ..Next

La instruccion For Each..Next repite instrucciones para cada uno de los objetos de una colección
determinada.

Modificaremos un poco un ejemplo visto anteriormente sobre los colores del libro para
obtener el mismo resultado.
Pero esta vez haremos referencia a colecciones de objetos.

Sub obtener_los_56_colores()

'aqui es conocido que El Excel maneja una paleta de 56 colores
'entonces sabemos tambien que es necesario repetir cierta seccion del codigo


Dim rango_a_pintar As Range
Dim celda As Range
Dim a As Byte

Set rango_a_pintar = Range("A1:A56") 'asignamos el rango que necesitamos


For Each celda In rango_a_pintar 'repetir en cada uno de los elementos de la coleccion

a = a + 1

celda.Interior.ColorIndex = a 'asignar colores del libro a respectiva celda

Next celda

End Sub

Estructuras de Repeticion (Bucles For ..Next )

Las estructuras For...Next las emplearemos en los casos cuando s conocemos el numero de veces que es necesario repetir la ejecuion de determinadas instrucciones

Sub obtener_los_56_colores()

'aqui es conocido que Excel maneja una paleta de 56 colores
'entonces sabemos tambien que es necesario repetir cierta seccion del codigo

Dim a As Byte

Range("A1:A56").Select

For a = 1 To 56 'repetir 56 veces

Selection.Cells(a).Interior.color = ActiveWorkbook.Colors(a)

'asignar colores del libro a la respectiva celda

Next a

End Sub

Estructuras de Repetición

Las estructuras de repeticion son usadas para ejecutar una o mas instrucciones repetidas veces

Do...Loop
---------
Nos permitira ejecutar un bloque de instrucciones durante un numero indefinido de veces
*Pero mientras una condición sea (TRUE)Verdadera o hasta que llegue hacer verdadera.

El sgte es un ejemplo de una macro que comprueba la condicion sea true al inicio para poder continuar con las repeticiones

'primero ingresa valores en una columna ...por ejemplo de A1 a A5
'ahora colocate sobre la celda A1

Sub EJEMPLO_DO_LOOP() 'verificar condicion al inicio

'esta macro suma el valor de la variable "I"
'al valor de cada celda
'la palabra clave While verifica la condicion sea verdadera'
y continua entonces la ejecucion del bucle

Dim I As Integer

Do While Not IsEmpty(Selection) 'las repeticiones continuran siempre y cuando la seleccion "no 'sea vacio

I = I + 100

If IsNumeric(Selection) Then Selection.Value = Selection.Value + I

Selection.Offset(1, 0).Select

Loop

End Sub


Sub EJEMPLO_DO_LOOP1() 'verificar al final

'esta macro suma el valor de la variable "I" al valor de cada celda
'la palabra clave While verifica la condicion sea verdadera pero al final es decir
'despues de haber ejecutado la menos una vez el bucle

Dim I As Integer

Do

I = I + 100

If IsNumeric(Selection) Then Selection.Value = Selection.Value + I

Selection.Offset(1, 0).Select

Loop While Not IsEmpty(Selection) 'las repeticiones continuran siempre y cuando la seleccion
'no sea vacio

End Sub