La estructura Do While en VBA o también conocida como Do Loop en VBA sirve para repetir un conjunto de instrucciones. Como por ejemplo:
Si bien For en Vba también permite repetir algunas instrucciones, la principal diferencia radica en que en el caso del For se conoce de forma precisa el número de veces que se ejecutará un conjunto de instrucciones, en el caso del Do While en Vba no se conoce el número de veces que la instrucción de va a repetir, estas instrucciones se repetirán hasta el momento en que se cumpla alguna condición.
Sintaxis de Do While VBA
La sintaxis del Do While o Do Loop es como sigue:
Do { While | Until } Condición
[Instrucciones a repetir]
[Exit Do ]
[Instrucciones a repetir]
Loop
Ó también puede ser de la forma
Do
[Instrucciones a repetir]
[Exit Do]
[Instrucciones a repetir]
Loop { While | Until } Condición
Los elementos que se encuentran entre corchetes "[ ]" son opcionales, "Exit Do" provocará que el Do While termine.
Así tendríamos por ejemplo:
Sub EjemploDoWhile()
Dim contador As Integer
Dim numero As Integer
numero = 9
Do Until numero = 10
If numero <= 0 Then Exit Do
numero = numero - 1
contador = contador + 1
Loop
MsgBox "Se alcanzó el valor " & numero & " " & contador
End Sub
Si por algún motivo la instrucción creada es un bucle infinito presione ESC CTRL + ENTER para poder romper el bucle sin tener que cerrar Excel, los siguientes ejemplos de Do While le permitirá tener una idea más clara de cómo emplearlo.
Ejercicios con Do While VBA
Examine los siguientes ejemplos de Do While en VBA, y descubra algunas ideas de como emplearlo.
- Barra de progreso VBA
- Range.Find en VBA
- ActiveSheets
- 5 ejemplos de uso de Loop
- DO LOOP aplicado a la localización de planta
- Do... Loop para evaluar si dar un crédito o no a un solicitante
- Do Loop aplicado a repetir indicaciones
- Do Loop: Aplicado a la obtención del Brevete
- Carrera de Caballos: Uso del With y también el For, Do y el While Wend
- DO LOOP en VBA para seleccionar balones reglamentarios
- DO LOOP en VBA para inscribir a un postulante a la PNP de acuerdo a su talla.
- Do Loop en VBA para detallar la condición de un pasajero
- DO LOOP en VBA aplicado al cálculo del porcentaje de proveedores homologados
- DO LOOP en VBA para generar datos aleatorios
- DO LOOP en VBA para contraseña de usuario
- Uso de DO LOOP para el ejercicio del nivel estudiantil (con IF THEN )
- Crear un Archivo por cada hoja de Excel
- Ejemplo de DO LOOP para solicitar datos
- Selección de beneficiarios de un programa social: aplicación del Bucle Do Loop
- Excel Avanzado: Do Loop aplicado a la selección de candidatos
- Do...Loop aplicado para la actualización de estado de un velocímetro
- Estructura Do Loop aplicado al rango de notas
- Ejemplo de Do loop para establecer un resultante
- Ejemplo de Do...Loop - cálculo de la suma de los N primeros números naturales
- Ejemplo de Do Loop aplicado al registro de proyectos
- Ejemplo de do loop aplicado al calculo del valor fob exportado
- Ejemplo de Do loop aplicado para Rellenos de Información Personal
- Ejemplo de uso de Loop, aplicado a los ingresos tributarios del gobierno
- Ejemplo de uso de “Do Loop” aplicado al relleno de plantillas de Costos.
- Ejemplo de Uso de DoLoop aplicado a llenado Fechas
- Ejemplo de uso de Do loop
17/04/2015 a las 10:14 am
ESTA ES LA MEJOR PAGINA PARA APRENDER MA SOBRE ESTE BUCLE.
GRACIAS!!!!
04/09/2015 a las 3:51 pm
Muy buena página, me sirve bastante en mi aprendizaje de macros!!....Gracias
28/04/2016 a las 11:27 am
hola quiero crear un registro de datos que contenga todos los datos de diferentes pacientes,sera que lo hago en una macro o a través de vb?gracias
01/07/2016 a las 3:01 pm
Los registros de datos se suelen realizar mediante formularios, dale una mirada a
https://www.excel-avanzado.com/userform-en-excel
07/08/2016 a las 6:22 pm
Excelente pagina. Mis felicitaciones y agradecimiento
18/08/2016 a las 9:23 pm
Se vale identar el codigo
30/05/2017 a las 11:06 pm
Hola a todos
Estoy trabajando en un proyecto de factura y quiero completar un formulario para la misma, en verdad voy bastante avanzado pero necesito ayuda para la factura.
Es decir quiero capturar en el formulario los datos del cliente y productos que tengo en las bases de datos para luego Imprimir.
Gracias!
12/05/2019 a las 12:46 pm
Hola, tengo una macro que abre outlook para mandar un correo de la informacion visible, es decir, pongo datos y solo que esta filtrado se envia, pero son varios proveedores, quisiera hacer un ciclo donde se filtre, se envie a los correos que tengo en la otra pestana (cambian dependiendo el proveedor) y asi sucesivamente hasta terminar con todos mis proveedores
20/05/2019 a las 7:03 am
gracias maestro
12/06/2020 a las 10:20 am
Subiteracion()
Dim x As Double
Dim y As Double
Dim z As Double
x = 1
a = 4
b = 6
c = 9
z = 4 ^ x + 6 ^ x - (9 ^ x)
While (z > 0.001)
x = x + 0.0001
If z <= 0.001 Then
Wend
Msgbox (x)
End If
Ayudeme por Favor Donde está el error; el valor buscado es 1.186814....; le agradesco desde yá, su amigo Ing. Tutivén (Ecuador)
06/08/2023 a las 1:11 pm
El resultado sale 1.186699...
Podrías crear una función z para que vaya cambiando automáticamente su valor cada vez que la llames.
No es conveniente colocar el Wend del bucle condicionado en IF THEN
Yo pondría tu programa después de la definición de variables:
z = 4 ^ x + 6 ^ x - (9 ^ x)
Do While (z > 0.001)
x = x + 0.0001
z = 4 ^ x + 6 ^ x - (9 ^ x)
If z <= 0.001 Then Exit Do
Loop
MsgBox (x)