Curso Excel VBA y Macros – Cap. 23 – Bucle For…Next y la programación estructurada
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:
-
Se añade una hoja nueva al principio del archivo.
-
En la celda A1 de la hoja nueva ingresamos el texto INDICE, además de darle formato de Negrita a la celda.
-
En la variable CantidadHojas guardamos el número de hojas que tiene el archivo.
-
Una vez que tengamos la cantidad, el bucle For-Next vamos a repetir esa cantidad de veces un código.
-
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.
-
Se mostrará un mensaje donde se hará la pregunta de si deseamos asignarle un nombre a la hoja nueva.
-
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
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.