Estructuras Cíclicas, Repetitivas, Parte II

Tipos de Estructuras Cíclicas en VBA

En VBA existen dos tipos de estructuras cíclicas que permiten repetir un bloque de instrucciones contenido dentro de ellas.

  1. Cuando se conoce el numero de repeticiones a realizar se utiliza una estructura For –Next.
  2. Cuando el bloque a repetir se ejecuta hasta que una condición se cumple. En este caso se utilizan ciclos Do.

Existe una estructura cíclica que se aplica para los integrantes de una colección o para arreglos (Arrays). Esta estructura es For Each – Next, la cual trataremos en un próximo articulo.

 

For –Next

En la parte I de esta serie ya habíamos introducido esta estructura cíclica, sin embargo vamos a revisitar esta estructura para repasar y ampliar su uso.

La sintaxis de esta estructura es:

For Variable=valor inicial To valor final [step valor incremental]

Bloque de Declaraciones a repetir

Next [Variable]

Lo que se muestra en corchetes es opcional, el valor del step es por defecto 1, así que si se omite, el valor incremental en cada ciclo será 1. El nombre de la variable luego del comando Next puede omitirse, sin embargo por claridad se recomienda colocarlo.

Ejemplo

Esta simple secuencia de instrucciones efectúa la suma de los primeros n números naturales.

Public Sub sumafor()

Sum = 0
n = InputBox(“numero a sumar”, “ingresar n”, 100)

’ Inicio del ciclo For – Next

For i = 1 To n
Sum = Sum + i
Next i

’ Fin del ciclo For -Next

MsgBox “la suma es ” & Sum

End Sub

También podemos utilizar ciclos For-Next para escribir datos en una fila o columna de una hoja.

ciclico-5

En el procedimiento mostrado, seleccionamos la celda A3 como punto de inicio y utilizamos la propiedad Offset para mover en cada ciclo una celda adicional hacia abajo en la misma columna. Esto escribe el texto “Hola” en la columna A, desde la fila 4 hasta la 13.

ciclico-6

 

Así como la utilizamos para escribir, también podemos utilizarla para recorrer una fila o columna y leer datos.

ciclico-7

En el procedimiento LeerListas() vamos a leer los datos de la columna A y B y escribir en la columna C el resultado de A x B. primero seleccionamos la celda A5 como punto inicial y a partir de allí vamos a ir recorriendo fila por fila, mediante la propiedad Offset (row, column) y en cada fila asignar el valor de la celda en la columna A a la variable A y el valor de la celda en la columna B a la variable B. Calculamos la variable C = A * B y la escribimos en la celda que esta en la columna C.

ciclico-8

 

También se pueden leer o escribir matrices de datos utilizando ciclos For – Next anidados.

En el siguiente ejemplo se crea un procedimiento para crear una matriz de 6 filas y 6 columnas y colocar el valor 500 en cada celda.

ciclico-9

En el procedimiento la variable i se utiliza para moverse fila por fila y la variable j para moverse columna por columna. Así el primer ciclo For – Next cambiaria la variable i, y en el primer paso nos ubicaría en la fila 1 de la matriz, (1, j), luego el segundo ciclo For – Next se  movería a lo largo de la primera fila columna por columna hasta alcanzar la columna 6, al salir del ciclo For – Next interno (variable j), entonces el comando Next i movería a la segunda fila y continuaría el ciclo.

ciclico-10

Otro uso que le podemos dar a un ciclo For – Next es el de poblar un arreglo (Array).

Para poblar un arreglo unidimensional (fila o columna de datos), se utiliza un ciclo For – Next en conjunción con una declaración de asignación donde el índice del arreglo es igual a la variable definida en el For – Next.

ciclico-11

creamos un arreglo llamado Cinco(), y la variable i que toma valores de 0 a 4, crea cada elemento del arreglo y le asigna el valor de la variable i, asi que cuando i=0, el elemento del arreglo Cinco(0) es igual a 0. Luego escribimos en la celda (5+i,1), que corresponde a la celda A5, el valor del elemento Cinco(0). Este ciclo se repite para i=1, i=2, i=3 e i=4.

ciclico-12

Igualmente podemos poblar un arreglo bidimensional (matriz) utilizando un ciclo For – Next anidado.

ciclico-13

El ciclo For – Next externo con la variable i avanza fila a fila y el ciclo For – Next interno con la variable j avanza columna a columna.

ciclico-14

 

En el próximo articulo continuaremos con las estructuras cíclicas construidas con Do.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s