Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Do Loop aplicado a repetir indicaciones

| 1 comentario

La estructura Do... Loop, se utiliza cuando se requiere repetir instrucciones en un número indefinido de veces, hasta que cumpla una condición.

También debemos considerar ciertas pautas con la finalidad de evitar posibles errores.

Para entender mejor esta estructura, aplicare el siguiente ejemplo:

Si tenemos un grupo de máquinas que va a trabajar a una determinada altura, Debemos considerar  que si la altitud del lugar de operación es mayor a 1,500 msnm se debe preparar el equipo para trabajos en altura, es decir "pedir los repuestos" necesarios para la instalación del sistema de arranque en frío. Si va a una altura inferior a 1,500 "No considerar".

Para que se repita las indicaciones señaladas aplicaremos:

Sub preparacion()
x = 2
a = Cells(x, 2)
Do While Cells(x, 2) <> ""
If Cells(x, 2) > 1500 Then
Cells(x, 3) = "pedir repuestos"
Else
Cells(x, 3) = "No considerar"
End If
x = x + 1
Loop
End Sub

Para ejecutar mejor la macro colocaremos también un botón, que permitirá actualizar los datos mientras vamos ingresando la información

Private Sub CommandButton1_Click()
Call preparacion
End Sub

2

(Para mayor visualización de la imagen, hacer click en la misma)

 

DO..LOOP APLICADO

Un comentario

  1. Muchas gracias por el artículo, me encanta la página. Quería saber si me podías ayudar con este codigo. (Lo tengo "resuelto", pero tengo una duda sobre el Do While Loop).

    IDEA: buscar en una columna de datos la última celda vacía y pegar un valor. Lo hago con un Loop porque es un rango dinámico, todos los meses se incorporan valores nuevos.

    Mi solución (Nota: soy principiante en programación, apenas dos meses).

    *************

    Sub ejercicio3()

    Dim i As Long

    i = 0

    'Se loopea por un rango de celdas hasta que encuentre una celda vacía

    Do Until IsEmpty(Cells(i + 1, 1)) = True

    i = i + 1

    If IsEmpty(Cells(i + 1, 1)) = True Then

    Cells(i + 1, 1).Value = "test"

    Exit Sub

    End If

    Loop

    End Sub

    ========= *** =========

    MI PREGUNTA:
    No me queda claro el porqué cuando incorporo el contador (i = i + 1) al final (entre el END IF y el LOOP), en lugar de al principio (como está ahora, justo luego del DO UNTIL), no funciona el código.
    Casi siempre veo que en DO WHILE/UNTIL ponen el contador al final, y no al principio.

    No funciona asì:

    *************

    Sub ejercicio4()

    Dim i As Long

    i = 0

    Do Until IsEmpty(Cells(i + 1, 1)) = True

    If IsEmpty(Cells(i + 1, 1)) = True Then

    Cells(i + 1, 1).Value = "jeje"

    Exit Sub

    End If

    i = i + 1

    Loop

    End Sub

    ========= *** =========

    MUCHAS GRACIAS!

    PD. ya vi este post https://www.excel-avanzado.com/2791/identificar-la-ultima-fila-en-uso-con-vba.html

Deja una respuesta

Los campos requeridos estan marcados con *.