Curso Excel VBA y Macros – Cap. 24 – Bucles Do…Loop, Do…While y Do…Until

<<CURSO COMPLETO EN YOUTUBE>>

En este tutorial veremos algunos temas interesantes, sobre todo conceptos que son muy importantes de entender si deseamos volvernos desarrolladores de aplicaciones con VBA.

Veremos el tema de la Programación estructurada y cómo nos ayuda a tener código fácil de leer y en orden. Cómo debemos evitar la instrucción GoTo para evitar el código espagueti.

También definiremos lo que son los bucles o ciclos y cuáles son los más usados para generar repeticiones de bloques de código. Los bucles más usados son:

  • For-Next
  • Do While
  • Do Until

Ver video Capítulo 24 Excel VBA & Macros

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Programación estructurada

La premisa de la programación estructurada es que un segmento de código debe tener un punto de entrada y uno de salida. Esto es para tener un mejor código estructuralmente hablando.

La recomendación es evitar a toda costa la instrucción GOTO, ya que el uso de esta instrucción provoca que tengamos el llamado código espagueti, donde no tenemos claro dónde inicia una estructura y dónde termina, además de estar brincando de una línea a otra en nuestro código.

Si vamos a utilizar la instrucción GOTO, debe ser solamente cuando deseemos tener un manejador de errores, el cual veremos en temas posteriores de este curso.

La programación estructurada nos permite tener código fácil de leer y entender.

Bucles o ciclos

En programación, un bucle es una secuencia que se repite n cantidad de veces. El bucle o ciclo se repite hasta que llega al número final o hasta que se cumpla una condición, dependiendo el bucle usado.

Los ciclos más utilizados son:

  • For-Next. Lo vimos en el capítulo 23.
  • Do While. Lo veremos en este capítulo.
  • Do Until. Lo veremos en este capítulo.

Bucles Do…Loop

Con respecto a los bucles o ciclos Do-Loop, es importante comentar que existen dos importantes, el bucle Do…While y el bucle Do…Until. En seguida veremos las diferencias entre cada uno:

  • Do-While. Repite una serie de instrucciones mientras una condición se cumpla, es decir, que sea True o VERDADERO.
  • Do-Until. Repite una serie de instrucciones hasta que una condición se cumpla, es decir, que sea True o VERDADERO.
  • While-Wend. Esta instrucción sigue vigente en VBA por temas de compatibilidad. Repite una serie de instrucciones siempre y cuando que una condición se cumpla o sea True.

Sintaxis

La sintaxis para los bucles Do-Loop es la misma, colo cambia el While por el Until. Aunque como ya vimos, las condiciones son tratadas de manera diferente.

Do [While ó Until ] condición
[ instrucciones ]
[ Exit Do ]
[ instrucciones ]
Loop

También puede usarse la siguiente sintaxis.

Do [ instrucciones ]
[ Exit Do ]
[ instrucciones ]
Loop [While ó Until ] condición
Donde:

ELEMENTO

DESCRIPCIÓN

condition

Es la condición se que evaluará, podemos caracteres de comparación como =, <, >, <>.

instrucciones

Son las intrucciones que se repetirás mientras o hasta que la condición devuelva True o VERDADERO.

Exit Do

Aquí le podemos indicar que si se cumple alguna condición especial, podemos salir del bucle.

Combinando Do-Loop con IF

En caso de que deseemos terminar el bucle, en caso de que se cumpla alguna condición, podemos usar la instrucción IF…THEN…ELSE para evaluarla, y se cumple, entonces usamos Exit Do.

Ejemplos con Do…While…Loop

Obtener el índice de color de un rango de celdas

En esta macro vamos a usar las propiedades Interior y ColorIndex para obtener el color de índice de las celdas de un rango. Usando Do While vamos a recorrer las celdas de la columna y obtendremos el color de fondo de cada celda.

Option Explicit

'EXCELeINFO
'MVP Sergio Alejandro Campos
'http://www.exceleinfo.com
'https://www.youtube.com/user/sergioacamposh
'http://blogs.itpro.es/exceleinfo

Sub Do_While()

Range("B16").Select

Do While ActiveCell.Offset(0, -1).Value <> ""
    ActiveCell.Value = ActiveCell.Offset(0, -1).Interior.ColorIndex
    ActiveCell.Offset(1, 0).Select
Loop

End Sub
Usando Do Until

Usaremos la misma macro anterior, pero ahora usando Do Until.

Sub Do_Until()

Range("C16").Select

Do
    ActiveCell.Value = ActiveCell.Offset(0, -2).Interior.ColorIndex
    ActiveCell.Offset(1, 0).Select
Loop Until ActiveCell.Offset(0, -2).Value = ""

End Sub

Colorear celdas dependiendo el tipo de nomenclatura

En esta macro simularemos la nomenclatura que habitualmente se utiliza en una nómina. Se recorrerá cada una de las celdas y dependiendo el contenido o la letra, se aplicará el color de fondo.

Sub ColorearTipos()

Range("A5").Select

Do While ActiveCell.Value <> ""
    
    If VBA.IsNumeric(ActiveCell.Value) Then Exit Do
    
    With ActiveCell.Interior
        Select Case ActiveCell.Value
            Case "A"
                .ColorIndex = 50
            Case "D"
                .ColorIndex = 2
            Case "V"
                .ColorIndex = 3
            Case "F"
                .ColorIndex = 46
            Case Else
                .ColorIndex = xlNone
        End Select
    End With
    
    ActiveCell.Offset(1, 0).Select

Loop

End Sub

Descarga el archivo de ejemplo

024 – Bucles Do…Loop, Do…While, Do…Until – EXCELeINFO.zip

<<CURSO COMPLETO EN YOUTUBE>>

Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.

You may also like...