Bitácora del desarrollo de mi clase de Visual Basic, en el que ´publicaré el material de la clase y recibiré comentarios y sugerencias de mis alumnos.

Sunday, August 02, 2009

4.3.3. For Each...Next

For Each...Next

El bucle For Each...Next es similar al bucle For...Next, pero repite un grupo de sentencia por cada elemento de una colección de objetos o de una matriz en vez de repetir las sentencias un número especificado de veces. Esto resulta especialmente útil si no se sabe cuántos elementos hay en la colección. He aquí la sintaxis del bucle For Each...Next:

For Each elemento In grupo

Sentencias

Next elemento

Por ejemplo, el siguiente procedimiento Sub abre la base de datos Biblio.mdb y agrega el nombre de cada tabla a un cuadro de lista.

Sub ListTableDefs ( )

Dim objDb As Database

Set objDb = OpenDatabase("c:/Archivos de programa/Devstudio/" & _

"vb/biblio.mdb", True, False)

For Each TableDef In objDb.TableDefs ( )

List1.AddItem TableDef.Name

Next TableDef

End Sub

Tenga en cuenta las restricciones siguientes cuando utilice For Each...Next:

§ Para las colecciones, elemento sólo puede ser una variable Variant, una variable Object genérica o un objeto mostrado en el Examinador de objetos.

§ Para las matrices, elemento sólo puede ser una variable Variant.

§ No puede utilizar For Each...Next con una matriz de tipos definidos por el usuario porque un Variant no puede contener un tipo definido por el usuario.

El siguiente ejemplo habilita todos los Cuadro de Texto del formulario:

Private Sub ModoEdición ( )

Dim control

For Each control In form1.Controls

If TypeOf control Is TextBox Then

Control.Enabled = True

End If

Next control

End Sub

Salida de una Estructura de Control

La instrucción Exit le permite salir directamente de un bucle For o de un bucle Do. La sintaxis de la sentencia Exit es sencilla: Exit For puede aparecer tantas veces como sea necesario dentro de un bucle For y Exit Do puede aparecer tantas veces como sea necesario dentro de un bucle Do:

For contador = iniciar To finalizar [Step incremento]

[bloque sentencias]

[Exit For]

[bloque sentencias]

Next [contador]

Do [{While / Until} condición]

[bloque de sentencias]

[Exit Do]

[bloque de sentencias]

Loop

Do

[bloque de sentencias]

[Exit Do]

[bloque de sentencias]

Loop [{While / Until} condición]

Exit For y Exit Do son muy útiles ya que, algunas veces, resulta apropiado salir inmediatamente de un bucle sin realizar más iteraciones o sentencias dentro del bucle.

Cuando utilice la instrucción Exit para salir de un bucle, el valor de la variable contador difiere, dependiendo de cómo haya salido del bucle:

§ Cuando termina un bucle, la variable contador contiene el valor del límite superior más el paso.

§ Cuando sale de un bucle prematuramente, la variable contador conserva su valor según las reglas usuales del alcance.

§ Cuando sale antes del final de una colección, la variable contador contiene Nothing si se trata de un tipo de dato Object y Empty si es un tipo de dato Variant.


0 Comments:

Post a Comment

<< Home