Curso Excel VBA y Macros – Cap. 23 – Bucle For…Next y la programación estructurada

<<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 23 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 veremos en este capítulo.
  • Do While. Lo veremos después.
  • Do Until. Lo veremos después.

Instrucción o bucle For…Next

Ese ciclo nos permitirá repetir un grupo de instrucciones un número determinado de veces. El ciclo For-Next debe tener una variable que será nombrada como Contador, y ese contador debe tener un valor inicial y uno final, para indicar cuántas veces se repetirá un código. El contador irá aumentando su valor en cada ciclo o cada repetición que se haga.

Sintaxis de For-Next

Vemos a continuación la sintaxis de For Next donde vemos el uso de la variable contador y cómo se le indica un valor de inicio y un valor de finalización.

For counter = start To end [ Step step ]
[ instrucciones ]
[ Exit For ]
[ instrucciones ]
[ contador ] Next

Donde:

PARTE

DESCRIPCIÓN

counter

Variable numérica que se irá aumentando en cada ciclo. Se usará como contador en el bucle. No se pueden usar tipos booleanos.

start

Es el valor inicial del contador. Puede comenzar en 0 o en cualquier valor numérico. También puede usarse un valor de una variable.

end

Es el valor final del contador. También puede usarse un valor de una variable.

step

Es la cantidad que se aumentará cada vez que se recorra el ciclo. Por default es valor es 1.

statements

Son las instrucciones que se ejecutará un número de terminado de veces. Estas instrucciones van entre el For y el Next.

Ejemplos usando For…Next

En esta macro vemos el uso simple del bucle For-Next, donde tenemos una variable de tipo contador a la que daremos el nombre de i. Usando For Next vamos a mostrar un mensaje 5 veces, y cada vez que se ejecute se mostrará el valor de i, que irá aumentando en 1.

Option Explicit

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

Sub Bucle_For()

Dim i As Byte

For i = 1 To 5
    MsgBox "El valor del contador i, es: " & i
Next i

End Sub

Para esta macro usaremos conceptos que ya hemos visto en otros videos. Es importante que hayas repasado los temas anteriores para que entendamos bien cómo funciona esta macro y el porqué de cada parte. Los pasos de la macro serán:

  1. Se añade una hoja nueva al principio del archivo.
  2. En la celda A1 de la hoja nueva ingresamos el texto INDICE, además de darle formato de Negrita a la celda.
  3. En la variable CantidadHojas guardamos el número de hojas que tiene el archivo.
  4. Una vez que tengamos la cantidad, el bucle For-Next vamos a repetir esa cantidad de veces un código.
  5. El código que se repetirá será el que ingrese el nombre de cada una de las hojas en la columna A de la hoja nueva.
  6. Se mostrará un mensaje donde se hará la pregunta de si deseamos asignarle un nombre a la hoja nueva.
  7. Si presionamos Si, entonces se mostrará un cuadro de diálogo para ponerle nombre a la hoja activa.
Sub CrearIndice()
Dim Hoja As Worksheet
Dim CantidadHojas As Integer
Dim i As Integer
Dim NuevoNombre, Resp

ThisWorkbook.Sheets.Add Before:=Sheets(1)
Set Hoja = Application.ActiveSheet

With Hoja.Range("a1")
    .Value = "INDICE"
    .Font.Bold = True
End With

CantidadHojas = ThisWorkbook.Sheets.Count

For i = 1 To CantidadHojas
    Hoja.Range("A1").Offset(i, 0).Value = Sheets(i).Name
Next i

Resp = MsgBox("Desea asignarle nombre a la hoja nueva?", vbYesNoCancel + vbQuestion, "EXCELeINFO")

If Resp = vbYes Then
    Application.Dialogs(xlDialogWorkbookName).Show
Else
'Nada
End If
End Sub

Descarga el archivo de ejemplo

023 – Bucle For…Next – 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...