Para el siguiente vba excel, pase al siguiente. Declaraciones de bucle en VBA. Proyecto "Rentas sobre Depósitos"

Hay situaciones en las que se requiere que un programa VBA realice el mismo conjunto de acciones varias veces seguidas (es decir, repita el mismo bloque de código varias veces). Esto se puede hacer usando bucles VBA.

Declaración de bucle For en Visual Basic

Estructura de declaración de bucle Para en Visual Basic se puede organizar en una de dos formas: como un bucle Para…Siguiente o como un ciclo Para cada.

Ciclo "Para...Siguiente"

Ciclo Para…Siguiente utiliza una variable que toma secuencialmente valores de un rango determinado. Con cada cambio en el valor de la variable se realizan las acciones contenidas en el cuerpo del bucle. Esto es fácil de entender con un ejemplo sencillo:

Para i = 1 a 10 Total = Total + iArray(i) Siguiente i

En este sencillo bucle Para…Siguiente se utiliza variable i, que secuencialmente toma los valores 1, 2, 3,… 10, y para cada uno de estos valores se ejecuta el código VBA dentro del bucle. Por lo tanto, este bucle suma los elementos de la matriz. iArray en una variable Total.

En el ejemplo anterior, el paso de incremento del bucle no está especificado, por lo que para incrementar la variable i Del 1 al 10 el valor predeterminado es incremento 1 . Sin embargo, en algunos casos es necesario utilizar diferentes valores de incremento para el bucle. Esto se puede hacer usando la palabra clave Paso, como se muestra en el siguiente ejemplo sencillo.

Para d = 0 a 10 Paso 0.1 dTotal = dTotal + d Siguiente d

Dado que en el ejemplo anterior el paso de incremento está establecido en 0.1 , entonces la variable dTotal para cada repetición del ciclo toma los valores 0,0, 0,1, 0,2, 0,3,... 9,9, 10,0.

Para determinar el paso del bucle en VBA, puede utilizar un valor negativo, por ejemplo, así:

Para i = 10 a 1 Paso -1 iArray(i) = i Siguiente i

Aquí el paso de incremento es -1 , entonces la variable i con cada repetición del ciclo toma los valores 10, 9, 8,... 1.

Para cada bucle

Ciclo Para cada parece un ciclo Para…Siguiente, pero en lugar de recorrer la secuencia de valores de la variable de contador Para cada realiza un conjunto de acciones para cada objeto en un grupo específico de objetos. En el siguiente ejemplo, usando un bucle Para cada Enumera todas las hojas del libro de Excel actual:

Atenuar wSheet como hoja de trabajo para cada wSheet en Hojas de trabajo MsgBox "Hoja encontrada:" & wSheet.Name Siguiente wSheet

Salida para operador de interrupción de bucle

Operador Salir por Se utiliza para interrumpir el ciclo. Tan pronto como se encuentra esta declaración en el código, el programa finaliza la ejecución del bucle y procede a ejecutar las declaraciones encontradas en el código inmediatamente después de este bucle. Esto se puede utilizar, por ejemplo, para buscar un valor específico en una matriz. Para hacer esto, use un bucle para revisar cada elemento de la matriz. Una vez que se encuentra el elemento requerido, no es necesario revisar el resto: el ciclo se interrumpe.

Aplicación del operador Salir por demostrado en el siguiente ejemplo. Aquí el bucle recorre 100 entradas de la matriz y compara cada una con el valor de la variable. dval. Si se encuentra una coincidencia, el ciclo se interrumpe:

Para i = 1 a 100 Si dValues(i) = dVal Entonces IndexVal = i Salir Para finalizar si el siguiente i

Hacer bucle while en Visual Basic

Ciclo hacer mientras ejecuta un bloque de código siempre que se cumpla una condición determinada. El siguiente es un ejemplo del procedimiento. Sub, en el cual, usando un bucle hacer mientras Los números de Fibonacci que no superan 1000 se muestran secuencialmente:

"El procedimiento Sub imprime números de Fibonacci que no exceden 1000 Sub Fibonacci() Dim i As Integer "un contador para indicar la posición de un elemento en la secuencia Dim iFib As Integer "almacena el valor actual de la secuencia Dim iFib_Next As Integer "almacena el siguiente valor de la secuencia Dim iStep As Integer "almacena el tamaño del siguiente incremento "inicializa las variables i e iFib_Next i = 1 iFib_Next = 0 "el bucle Do While se ejecutará hasta que el valor del "número de Fibonacci actual exceda 1000 Do Mientras iFib_Next< 1000 If i = 1 Then "особый случай для первого элемента последовательности iStep = 1 iFib = 0 Else "сохраняем размер следующего приращения перед тем, как перезаписать "текущее значение последовательности iStep = iFib iFib = iFib_Next End If "выводим текущее число Фибоначчи в столбце A активного рабочего листа "в строке с индексом i Cells(i, 1).Value = iFib "вычисляем следующее число Фибоначчи и увеличиваем индекс позиции элемента на 1 iFib_Next = iFib + iStep i = i + 1 Loop End Sub

En el ejemplo dado, la condición iFib_Siguiente< 1000 comprobado al inicio del ciclo. Por lo tanto, si el primer valor iFib_Siguiente Si fueran más de 1000, entonces el bucle no se ejecutaría ni una sola vez.

Otra forma de implementar un bucle. hacer mientras– coloque la condición no al principio, sino al final del bucle. En este caso, el bucle se ejecutará al menos una vez, independientemente de si la condición es verdadera.

Esquemáticamente tal ciclo hacer mientras Con la condición verificada al final, se verá así:

Hacer... bucle mientras iFib_Next< 1000

Hacer hasta bucle en Visual Basic

Ciclo Hacer hasta muy similar a un ciclo hacer mientras: El bloque de código en el cuerpo del bucle se ejecuta una y otra vez hasta que se cumple la condición especificada (el resultado de la expresión condicional es Verdadero). En el siguiente procedimiento Sub usando un bucle Hacer hasta extrae valores de todas las celdas de una columna A hoja de trabajo hasta que se encuentre una celda vacía en la columna:

IRow = 1 Do Until IsEmpty(Cells(iRow, 1)) "El valor de la celda actual se almacena en la matriz dCellValues ​​​​dCellValues(iRow) = Cells(iRow, 1).Value iRow = iRow + 1 Loop

En el ejemplo anterior la condición Está vacío (celdas (iRow, 1)) Ubicado al inicio de la estructura. Hacer hasta, por lo tanto, el bucle se ejecutará al menos una vez si la primera celda tomada no está vacía.

Sin embargo, como se mostró en los ejemplos de bucle hacer mientras, en algunas situaciones desea que el bucle se ejecute al menos una vez, independientemente del resultado inicial de la expresión condicional. En este caso, la expresión condicional debe colocarse al final del bucle, así:

Haga... bucle hasta que esté vacío (celdas (iRow, 1))

Declaraciones de bucle

En VBA Hay dos tipos principales de bucles: bucles con contador (paramétricos) y bucles con condiciones (iterativos).

Los bucles de contador se utilizan en los casos en que es necesario realizar determinadas acciones un número determinado de veces.

Los bucles condicionales se utilizan cuando determinadas acciones de un programa deben repetirse hasta que se cumpla una determinada condición.

Bucles con parámetro Para…Siguiente

Estructura del ciclo:

Para parámetro_ciclo = valor_inicial A Valor final

[Paso Paso]

Operadores

[Salir por]

Próximo [parámetro_ciclo]

donde para palabra clave Vba (desde), que indica el inicio del ciclo;

variable loop_parameter definida como un contador de bucle;

Valor_inicial un número que especifica el valor inicial del parámetro del bucle;

A palabra clave Vba (antes), dividiendo

Valor_inicial y conocimiento_final;

Final_Value un número que especifica el valor del parámetro del bucle,

En el que termina el ciclo;

Paso clave Vba (paso) usado para

Especificaciones de pasos de bucle, argumento opcional;

Paso un número que especifica el paso del ciclo, es decir el valor por el cual

Aumenta (o disminuye) el valor del parámetro.

Ciclo en cada paso. Este número podría ser

Negativo;

Salir por operador de salida anticipada del circuito (opcional);

Próximo palabra clave Vba (siguiente) que denota

Fin del ciclo.

Trabajo en ciclo:

Paso 1 Primero, se determina el parámetro del bucle y se calculan y almacenan los valores inicial y final de esta variable.

Paso 2 Al parámetro del bucle se le asigna un valor inicial.

Paso 3 El valor inicial del parámetro del bucle se compara con el valor final.

Si el parámetro del bucle es mayor que el valor final, el programa sale inmediatamente del bucle y salta a la línea de código que sigue al bucle.

Paso 4 Se ejecuta el cuerpo del bucle.

Paso 5 Después de ejecutar el cuerpo del bucle, se asigna el siguiente valor al parámetro del bucle. Vaya al paso 3.

Nota.

1. Si se utiliza una palabra clave Paso , entonces el parámetro del bucle cambia según el número especificado después de esta palabra. si la palabra Paso está ausente, entonces el valor del paso es igual a uno.

Ejemplo 1.

Para I = 0 a 10 Paso 2 (Valor I aumentará en 2)

2. Para...Siguiente bucle puede terminarse anticipadamente cuando se alcanza cualquier condición. Para hacer esto, en el lugar correcto del bucle debe colocar el operador. Salir por.

Ejemplo 2.

Dim S como entero

Dim j como entero

S=2

Para j = 1 a 10

S = S + j

Si S > 6 Entonces

Salir por (Salga del ciclo si el valor S > 6)

Terminara si

Siguiente j

Cuadro de mensajes(S)

Bucles condicionales (iterativos)

Si es necesario realizar alguna acción (varias acciones) muchas veces, pero no se sabe de antemano cuántas veces y esto depende de alguna condición, entonces se debe utilizar un bucle con una condición previa o una condición posterior.

En VBA hay dos bucles principales HACER...BUCLE con una condición ingresada por una palabra clave Mientras , y con la condición ingresada por la palabra clave Hasta . Ambos pueden ser con condición previa o poscondición.

Sintaxis:

donde hacer palabra clave (hacer);

Mientras palabra clave (todavía);

Hasta palabra clave (hasta);

Bucle una palabra clave que indica el final del ciclo;

<условие>una expresión lógica cuya verdad se comprueba

Al comienzo de cada ejecución del cuerpo del bucle;

<тело_цикла>secuencia arbitraria de operadores;

Hacer...Durante la construcción dice: hacer mientras se cumpla la condición. en diseño Hacer...mientras para

The Do...Hasta que la construcción diga: hacer hasta que se cumpla la condición. en diseño Hacer hasta Para aumentar el paso, debes escribir un operador especial, porque en él, a diferencia del diseño Para , esto no se hace automáticamente.

Condición escrita después de la palabra clave Hasta , se verifica al final de cada iteración (después de ejecutar el cuerpo del bucle). Tenga en cuenta que no funciona exactamente de la misma manera que en el bucle. Mientras . Si la condición es verdadera ( Verdadero ), luego el ciclo termina. Si la condición no se cumple (es falsa FALSO ), luego el cuerpo del bucle se ejecuta nuevamente.

Ejemplo 1.

Formulación del problema. Calcular la suma de una serie finita mediante un procedimiento de subrutina.

Tecnología de ejecución de tareas:

1. Datos iniciales: yo  Z

Resultado: S  R .

2.Escriba el siguiente procedimiento personalizado en el módulo de proyecto estándar usando un bucle con una condición previa Mientras:

Sub suma()

Dim S como entero

Atenuar i como entero

S=0

yo = 1

hacer mientras yo<= 10

S = S + i^2

yo = yo + 1

Bucle

Cuadro de mensajes(S)

Subtítulo final

3.Escriba el siguiente procedimiento personalizado en el módulo de proyecto estándar usando un bucle con una condición previa Hasta:

Sub suma()

Dim S como entero

Atenuar i como entero

S=0

yo = 1

Hacer hasta i > 10

S = S + i^2

yo = yo + 1

Bucle

Cuadro de mensajes(S)

Subtítulo final

4 Escriba el siguiente procedimiento personalizado en el módulo de proyecto estándar usando un bucle con una poscondición Mientras:

Sub suma()

Dim S como entero

Atenuar i como entero

S=0

yo = 1

S = S + i^2

yo = yo + 1

Bucle mientras yo<= 10

Cuadro de mensajes(S)

Subtítulo final

5 Escriba el siguiente procedimiento personalizado en el módulo de proyecto estándar usando un bucle con una poscondición Hasta:

Sub suma()

Dim S como entero

Atenuar i como entero

S=0

yo = 1

S = S + i^2

yo = yo + 1

Bucle hasta i > 10

Cuadro de mensajes(S)

Subtítulo final

Puede haber una situación en la que necesites ejecutar un bloque de código varias veces. En general, las sentencias se ejecutan de forma secuencial: primero se ejecuta la primera sentencia de una función, luego la segunda, etc.

Los lenguajes de programación proporcionan diferentes estructuras de control que permiten rutas de ejecución más complejas.

La declaración de bucle nos permite ejecutar una declaración o un grupo de declaraciones varias veces. A continuación se muestra una vista general de una declaración de bucle en VBA.

VBA proporciona los siguientes tipos de bucles para manejar los requisitos de bucles. Haga clic en los siguientes enlaces para consultar sus detalles.

en bucle

Un bucle for es una estructura de control de repetición que permite a un desarrollador escribir de manera eficiente un bucle que debe ejecutarse una cierta cantidad de veces.

Sintaxis

A continuación se muestra la sintaxis del bucle for en VBA.

Para contador = inicio Para finalizar.... .... Siguiente

Diagrama de flujo

A continuación se muestra el flujo de control en el modo Loop:

  • El primer paso está completo. Este paso le permite inicializar cualquier variable de control de bucle e incrementar la variable del contador de pasos.
  • En segundo lugar, se evalúa la condición. Si es verdadero, se ejecuta el cuerpo del bucle. Si es falso, el cuerpo del bucle no se ejecuta y el flujo de control pasa a la siguiente instrucción inmediatamente después del bucle For.
  • Después de que se ejecuta el bucle For, el flujo de control pasa a la siguiente declaración. Esta declaración le permite actualizar cualquier variable de control de bucle. Se actualiza según el valor del contador de pasos.
  • La condición ahora se evalúa nuevamente. Si es verdadero, el bucle se ejecuta y el proceso se repite (cuerpo del bucle, luego incremento de paso, luego condición nuevamente). Una vez que la condición se vuelve falsa, el ciclo For finaliza.

ejemplo

Agregue un botón y agregue la siguiente función.

Private Sub Constant_demo_Click() Atenuar a como entero a = 10 Para i = 0 A un cuadro de mensaje del paso 2 "El valor de i es: " & i Next End Sub

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado.

El valor es i es: 0
El valor es i es: 2
El valor es i es: 4
El valor es i es: 6
El valor es i es: 8
El valor es i es: 10

Ejecuta una secuencia de declaraciones varias veces y acorta el código que controla la variable del bucle.

en bucle

Cada bucle se utiliza para ejecutar una declaración o grupo de declaraciones en cada elemento de una matriz o colección.

For each loop es similar a For Loop; sin embargo, el bucle se ejecuta para cada elemento de la matriz o grupo. Por tanto, el contador de pasos no existirá en este tipo de bucle. Se usa principalmente con matrices o en contexto de objetos. sistema de archivos trabajar recursivamente.

Sintaxis

A continuación se muestra la sintaxis de For Each bucle en VBA.

Para cada elemento del grupo....Siguiente

ejemplo

Private Sub Constant_demo_Click() "frutas es una matriz frutas = Array("manzana", "naranja", "cerezas") Dim nombres de frutas como variante "iterando usando Para cada bucle. Para cada elemento en frutas nombres de frutas = nombres de frutas y artículo y Chr(10) Siguiente MsgBox nombres de frutas End Sub

Cuando se ejecuta el código anterior, imprime todos los nombres de las frutas con un elemento en cada línea.

manzana
naranja
cerezas

Esto se ejecuta si hay al menos un elemento en el grupo y se repite para cada elemento del grupo.

mientras...wend bucle

En un bucle While While... Wend, si la condición es Verdadera, todas las declaraciones se ejecutan hasta que se encuentra la palabra clave Wend.

Si la condición es falsa, el ciclo finaliza y el control pasa a la siguiente declaración después de la palabra clave Wend.

Sintaxis

A continuación se muestra la sintaxis del bucle While..Wend en VBA.

Mientras condición(es)... Wend

Diagrama de flujo

ejemplo

Private Sub Constant_demo_Click() Contador tenue: Contador = 10 Mientras Contador< 15 " Test value of Counter. Counter = Counter + 1 " Increment Counter. msgbox "The Current Value of the Counter is: " & Counter Wend " While loop exits if Counter Value becomes 15. End Sub

Cuando se ejecuta el código anterior, generará lo siguiente en el campo de mensaje.

El valor actual del contador es: 11
El valor actual del contador es: 12
El valor actual del contador es: 13
El valor actual del contador es: 14
El valor actual del contador es: 15

Esto verifica la condición antes de ejecutar el cuerpo del bucle.

hacer...mientras bucle

Un bucle Do... while se utiliza cuando queremos repetir un conjunto de declaraciones mientras una condición es verdadera. La condición se puede verificar al principio o al final del ciclo.

Sintaxis

A continuación se muestra la sintaxis del bucle Do...While en VBA.

Hacer condición Mientras... Bucle

Diagrama de flujo

ejemplo

El siguiente ejemplo utiliza un bucle Do... while para comprobar el estado al principio del bucle. Las declaraciones dentro del bucle se ejecutan sólo si la condición se vuelve Verdadera.

Private Sub Constant_demo_Click() Hacer mientras yo< 5 i = i + 1 msgbox "The value of i is: " & i Loop End Sub

El valor de i es: 1
El valor de i es: 2
El valor de i es: 3
El valor de i es: 4
El valor de i es: 5

Sintaxis alternativa

También hay una sintaxis alternativa para el bucle Do... while que comprueba el estado al final del bucle. La principal diferencia entre estas dos sintaxis se explica en el siguiente ejemplo.

Hacer... ... Bucle mientras condición

ejemplo

El siguiente ejemplo utiliza un bucle Do... while para comprobar el estado al final del bucle. Las declaraciones dentro de un bucle se ejecutan al menos una vez, incluso si la condición es Falsa.

Private Sub Constant_demo_Click() i = 10 Do i = i + 1 MsgBox "El valor de i es: " & i Bucle mientras i< 3 "Condition is false.Hence loop is executed once. End Sub

Cuando se ejecuta el código anterior, imprime el siguiente resultado en un cuadro de mensaje.

El valor de i es: 11

Las declaraciones do..While se ejecutarán siempre que la condición sea Verdadera. (Es decir) El ciclo debe repetirse hasta que la condición sea Falsa.

hacer... hasta el bucle

Un bucle do...intil no se utilizará cuando queramos repetir un conjunto de declaraciones mientras la condición sea falsa. La condición se puede verificar al principio o al final del ciclo.

Sintaxis

A continuación se muestra la sintaxis del bucle Do..Until en VBA.

Hacer hasta condición... ... Bucle

Diagrama de flujo

ejemplo

El siguiente ejemplo utiliza Do... Before Loop para probar una condición al comienzo del ciclo. Las declaraciones dentro del bucle se ejecutan sólo si la condición es falsa. Sale del bucle cuando la condición se vuelve verdadera.

Private Sub Constant_demo_Click() i = 10 Do Until i>15 "La condición es falsa. Por lo tanto, se ejecutará el bucle i = i + 1 msgbox ("El valor de i es: " & i) Loop End Sub

Cuando se ejecuta el código anterior, imprime el siguiente resultado en un cuadro de mensaje.

El valor de i es: 11
El valor de i es: 12
El valor de i es: 13
El valor de i es: 14
El valor de i es: 15
El valor de i es: 16

Sintaxis alternativa

También hay una sintaxis alternativa, Do... Before Loop, que prueba la condición al final del bucle. La principal diferencia entre estas dos sintaxis se explica en el siguiente ejemplo.

Hacer... ... Bucle hasta condición

Diagrama de flujo

ejemplo

El siguiente ejemplo utiliza Do...Before un bucle para probar una condición al final del bucle. Las declaraciones dentro de un bucle se ejecutan al menos una vez, incluso si la condición es Verdadera.

Private Sub Constant_demo_Click() i = 10 Do i = i + 1 msgbox "El valor de i es: " & i Loop Until i more15 "La condición es verdadera. Por lo tanto, el bucle se ejecuta una vez. End Sub

Cuando se ejecuta el código anterior, imprime el siguiente resultado en un cuadro de mensaje.

El valor de i es: 11

Las declaraciones do..Until se ejecutarán siempre que la condición sea Falsa. (Es decir) El ciclo debe repetirse hasta que la condición sea verdadera.

Registros de control de ciclo

Las declaraciones de control de bucle cambian la ejecución fuera de su secuencia normal. Cuando la ejecución sale del alcance, todas las demás declaraciones de bucle no se ejecutan.

Declaración de control y descripción

Salida del operador

Salir para se usa cuando queremos salir del bucle For según ciertos criterios. Cuando se ejecuta Exit For, el control pasa a la siguiente instrucción inmediatamente después del bucle For.

Sintaxis

A continuación se muestra la sintaxis de Exit For Statement en VBA.

Diagrama de flujo

ejemplo

El siguiente ejemplo utiliza Salir para. Si el contador llega a 4, el bucle For finaliza y el control pasa a la siguiente instrucción inmediatamente después del bucle For.

Private Sub Constant_demo_Click() Dim a As Integer a = 10 For i = 0 To a Step 2 "i es la variable del contador y se incrementa en 2 MsgBox ("El valor de i es: " & i) Si i = 4 Entonces i = i * 10 "Esto se ejecuta solo si i=4 MsgBox ("El valor de i es: " & i) Exit For "Salió cuando i=4 End If Next End Sub

Cuando se ejecuta el código anterior, imprime el siguiente resultado en el cuadro de mensaje.

El valor es i es: 0
El valor es i es: 2
El valor es i es: 4
El valor es i es: 40

Termina una declaración de bucle For y transfiere la ejecución a la declaración inmediatamente después del bucle

Salir Hacer

La declaración Exit Do se utiliza cuando queremos salir de Do Loops según ciertos criterios. Se puede utilizar tanto en bucles Do Do...While como Do...Before.

Cuando se ejecuta Exit Do, el control pasa a la siguiente instrucción inmediatamente después del Do Loop.

Sintaxis

A continuación se muestra la sintaxis de la declaración Exit Do en VBA.

ejemplo

El siguiente ejemplo utiliza Salir Do. Si el contador llega a 10, la línea de salida Do termina y el control pasa a la siguiente instrucción inmediatamente después del bucle For.

Sub privado Constant_demo_Click() i = 0 Hacer mientras i<= 100 If i >10 Luego salga Do " El bucle sale si i>10 End If MsgBox ("El valor de i es: " & i) i = i + 2 Loop End Sub

Cuando se ejecuta el código anterior, imprime el siguiente resultado en un cuadro de mensaje.

El valor de i es: 0
El valor de i es: 2
El valor de i es: 4
El valor de i es: 6
El valor de i es: 8
El valor de i es: 10

Completa una declaración Do While y transfiere la ejecución a la declaración inmediatamente después del ciclo.

Trabajo de laboratorio sobre conceptos básicos de programación.

2.1. Tabulación de funciones representadas analíticamente.
y convergiendo cerca

objetivo del trabajo

· Consolidación de conocimientos teóricos sobre los fundamentos de la organización de estructuras ramificadas y cíclicas.

· Adquisición de habilidades prácticas de programación utilizando estructuras ramificadas y cíclicas en el sistema Visual Basic.

Hay tres tipos de declaraciones de bucle en VB:

ciclo de conteo: Para...Para...Siguiente

bucles con condiciones previas: Hacer mientras... Bucle, Hacer hasta... Bucle, Mientras... WEnd

· bucles con postcondiciones: Do...Loop While, Do...Loop Until.

Bucle de conteo: le permite recorrer un conjunto de declaraciones un número específico de veces. Su sintaxis es la siguiente:

Para encimera = Comenzar A fin

[operadores]

[operadores]

Próximo [ encimera]

Parámetro encimera es una variable numérica (entero, tipo real o Fecha, Variante, tipo Moneda) que se incrementa automáticamente después de cada repetición. Valor inicial encimera igual al parámetro Comenzar, y el parámetro final – fin. Si no se especifica, el paso se considera igual a 1; el valor del paso se puede cambiar. Puede ser un número positivo o negativo.

Hay cuatro construcciones sintácticas del Do....Loop:

Las declaraciones entre las palabras clave Do... Loop se ejecutan un número específico de veces dependiendo de la condición. Por ejemplo, en el siguiente fragmento de programa, cuando C = 100, se cumplirá la condición y se ingresará al bucle. Dentro del bucle, se llama al procedimiento y se disminuye el valor de C en 1. Luego se verifica nuevamente la condición (C > 0) y se ejecutan nuevamente los operadores del bucle (se ejecutarán 100 veces en total), hasta C = 0. Cuando la condición C > 0 se vuelve falsa y el ciclo se detiene.

Hacer mientras C > 0

El mismo fragmento de programa ejecutado usando un bucle con una condición previa en la sintaxis 2:

En este caso el bucle se ejecuta mientras la condición sea Falsa, a diferencia del caso anterior, es decir, continúa antes cumplimiento de la condición C = 0.

Las declaraciones de bucle 3 y 4 son muy similares en sintaxis a las dos primeras excepto que la condición No se calcula hasta que el bucle se ejecuta al menos una vez.

Estas sintaxis de bucle pueden utilizar las declaraciones de salida de bucle incondicional Exit For y Exit Do para transferir el control al operador detrás del bucle. Por ejemplo, en el siguiente fragmento de programa, si el valor inicial de C es >50, el ciclo se detendrá inmediatamente.



Hacer hasta C<= 0

Cuadro de mensajes “Inicio” el valor es mayor que aceptable”, “Error de entrada”

El bucle While...Wend se utilizó en las primeras versiones de Visual Basic. Su sintaxis es la siguiente:

Mientras<условие>

<Операторы>

A diferencia del bucle Do..Loop, el bucle While...Wend no tiene una segunda opción en la que se comprueba la condición al final del bucle. Además, no existe una declaración de salida de bucle para ello, como Exit Do.

VBA. Organización de ciclos.

Las declaraciones de bucle se utilizan para repetir una acción o grupo de acciones un número específico de veces. El número de repeticiones (iteraciones de bucle) puede ser predeterminado o calculado.

VBA admite dos tipos de construcciones en bucle:

  1. Bucles con un número fijo de repeticiones ( bucles contrarrestados).
  2. Bucles con un número indefinido de repeticiones ( bucles condicionales).

Para todo tipo de ciclos se utiliza el concepto. cuerpo de bucle , que define un bloque de declaraciones encerradas entre las declaraciones de inicio y fin del bucle. Cada repetición de la ejecución de las sentencias del cuerpo del bucle se llama iteración

Ciclos fijos

VBA proporciona dos estructuras de control para organizar un bucle fijo: For... Next (bucle con un contador) y For Each... Next (bucle con una enumeración).

Operador para...Siguiente Este es un bucle de contador típico que ejecuta un número específico de iteraciones. La sintaxis de la declaración For...Next es:

Para<счетчик> = <начЗначение>Eso<конЗначение>

<блок операторов>

Próximo [<счетчик>]

Un ejemplo del uso del operador Para...Siguiente.

Listado 1. Para... Siguiente operador

‘TAREA: Crear un programa que reciba dos números del usuario.

' Suma todos los números en el rango especificado por estos dos números, y luego

'muestra la cantidad resultante.

Submuestra7()

Dim i As Integer’ contador de ciclos

Atenuar el valor del contador inicial de sStart

Atenuar el valor del contador final de envío

Dim sSum As Long 'suma resultante

sStart = InputBox(“Ingrese el primer número:”)

sEnd = InputBox(“Ingrese el segundo número:”)

sSuma = 0

Para i = CInt(sInicio) A CInt(enviar)

sSuma = sSuma + i

Siguiente yo

MsgBox "La suma de los números desde " & sStart & " hasta " & sEnd & " es: " & sSum

Subtítulo final

Declaración de bucle para cada...Siguientepertenece a la categoría de operadores de tipo de objeto, es decir se aplica principalmente a colecciones objetos, así como matrices . El cuerpo del bucle se ejecuta un número fijo de veces, correspondiente al número de elementos de la matriz o colección. Para cada...Siguiente formato de declaración:

Para cada<элемент>En<группа> <блок операторов>Próximo [<элемент>]

Bucles condicionales (bucles indefinidos)

Los bucles condicionales se utilizan cuando es necesario realizar acciones repetidas solo bajo ciertas condiciones. El número de iteraciones no está definido y, en general, puede ser igual a cero (en particular, bucles for con una condición previa). VBA ofrece a los desarrolladores varias estructuras de control para organizar bucles condicionales:

  • Cuatro tipos de Do..Loops, que se diferencian en el tipo de condición que se verifica y el tiempo que lleva completar esta verificación.
  • Bucle continuo Mientras... Wend.

El bucle Do While... es típico bucle con condición previa. La condición se verifica antes de ejecutar el cuerpo del bucle. El ciclo continúa su trabajo hasta que<условие>se ejecuta (es decir, tiene el valor Verdadero). Dado que la verificación se realiza al principio, es posible que el cuerpo del bucle nunca se ejecute. Hacer mientras... Formato de bucle:

hacer mientras<условие>

<блок операторов>

Bucle

Listado 2. Hacer mientras... Bucle

‘TAREA: Crear un programa que requiera la entrada del usuario

'una secuencia arbitraria de números. La entrada debe ser terminada

'solo después de que la suma de los números impares ingresados ​​supere 100.

Submuestra8()

Dim OddSum As Integer 'suma de números impares

Dim OddStr As String 'una cadena con números impares

Dim Num’ para aceptar números ingresados

OddStr = “” ‘inicialización de cadena de salida

OddSum = 0 'inicializar OddSum

Hacer mientras OddSum< 100 ‘начало цикла

Num = InputBox(“Ingrese un número: “)

Si (Núm Mod 2)<>0 Luego 'verificación de paridad

OddSum = OddSum + Num’ acumulación de la suma de números impares

OddStr = OddStr & Núm & ””

Terminara si

Bucle

'imprime una cadena con números impares

Mensaje de MsgBox: = "Números impares:" & OddStr

Subtítulo final

Hacer... bucle mientras declaracióndiseñado para la organizaciónbucle con poscondición. La condición se comprueba después de que el cuerpo del bucle se haya ejecutado al menos una vez. El ciclo continúa su trabajo hasta<условие>sigue siendo cierto. Hacer... Bucle mientras Formato:

Hacer<блок операторов>Bucle mientras<условие>

Listado 3. Bucle con poscondición

‘TAREA: Crear un programa para el juego “Adivina el número”. El programa debe ser aleatorio.

'forma de generar un número en el rango de 1 a 1000, el usuario debe

'adivina este número. El programa muestra una pista para cada número ingresado.

' "más o menos".

Submuestra8()

Randomize Timer 'inicializa el generador de números aleatorios

Dim msg As String 'cadena de mensaje

Dim SecretNumber mientras sea largo, UserNumber como variante

Comenzar: SecretNumber = Round(Rnd * 1000) 'número generado por computadora

UserNumber = Vacío 'número ingresado por el usuario

Hacer juego

Seleccionar caso verdadero

Caso está vacío (Número de usuario): msg = "Ingrese un número"

Caso Número de usuario > Número secreto: msg = "¡Demasiados!"

Número de usuario del caso< SecretNumber: msg = “Слишком мало!”

Finalizar selección

Número de usuario = Cuadro de entrada (mensaje: = mensaje, Título: = "Adivina el número")

Bucle mientras número de usuario<>Número secreto

' examen

If MsgBox(“¿Jugar de nuevo?”, vbYesNo + vbQuestion, “¡Lo adivinaste!”) = vbYes Entonces

Ir a comenzar

Terminara si

Subtítulo final

Los bucles hacen hasta... bucle y hacen... bucle hasta son inversiones de los bucles condicionales discutidos anteriormente. En general, funcionan de manera similar, excepto que el cuerpo del bucle se ejecuta si la condición es falsa (es decir,<условие>=Falso). Hacer hasta... Formato de bucle:

Hacer hasta<условие> <блок операторов>Bucle

Hacer... Bucle hasta formato de bucle:

<блок операторов>

Bucle hasta<условие>

Tarea práctica:Reescriba los programas en los Listados 10 y 11 usando sentencias de bucle invertido.

Bucle mientras...Wend También se aplica a los bucles condicionales. Este operador es totalmente coherente con la estructura del bucle Do While.... Mientras... Formato de bucle Wend:

Mientras<условие>

<блок операторов>

Encaminarse a

Una característica distintiva de este operador es la imposibilidad. terminación forzada(interrumpiendo) el cuerpo del bucle (el operador Exit Do no funciona en el bucle While... Wend).

Interrumpir un ciclo

Para finalizar una iteración antes de tiempo y salir del ciclo, se utiliza la declaración Exit. Este operador es aplicable en cualquier estructura cíclica excepto While... Wend. La sintaxis general para usar Salir para romper un bucle es:

<начало_цикла>

[<блок операторов1>]

Salir (Para | Hacer)

[<блок операторов2>]

<конец_цикла>

Cuando se ejecuta la instrucción Exit, el ciclo se interrumpe y el control se transfiere a la instrucción que sigue a la instrucción.<конец_цикла>. Puede haber varias declaraciones de salida en el cuerpo de un bucle.

Listado 4. Forzar la salida del bucle

Submuestra9()

Para i = 1 a 10000000

Si i = 10, entonces Salir para 'salir del ciclo cuando el contador llegue a 10

Próximo




Arriba