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
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