Archivo de Excel utilizado: excelavanzado_fornext.xlsm
La estructura repetitiva FOR...NEXT nos permite realizar las instrucciones interiores a ella tantas veces como se indique. Es ideal cuando se sabe el número de ciclos que hemos de realizar. Se utiliza una variable auxiliar que podemos denominar con el nombre que queramos, mientras no sea una palabra reservada, y que inicialmente llamaremos i por costumbre.
El siguiente es un ejemplo de bucle For Next que se repite 10 veces.
For i=1 to 10 MsgBox i Next i
En esta macro de ejemplo las líneas de código interiores al For Next se repetirán 10 veces. Para el primer ciclo la variable i tomará el valor 1, para el segundo ciclo tomará el valor 2, y así sucesivamente hasta llegar al último ciclo donde i toma el valor 10.
La línea de código que hemos puesto en este ejemplo es un MsgBox cuya acción es lanzar una ventana emergente que irá mostrándonos los números del 1 al 10 a medida que la variable i va tomando esos valores. Por tanto, tendremos que pulsar 10 veces sobre el botón Aceptar para ir pasando a las siguientes ventanas.
Primer Vídeo
Option Explicit Sub Lista() Dim i As Byte For i = 1 To 10 Cells(i, 1) = i Next End Sub
Segundo Vídeo
- RND() para generar números aleatorios
- INT poma la parte entera
- Inicializar variables
- Contador
- Acumulador
Sub Lista2() Dim i As Long For i = 1 To 10000 Cells(i, 2) = i Next End Sub Sub Lista3() Dim i As Long For i = 1 To 10 Cells(i + 4, 3) = i Next End Sub Sub Lista4() Dim i As Long, fila As Long fila = 5 'Inicializamos la variable For i = 1 To 10 Cells(fila, "D") = i fila = fila + 1 'Contador Next End Sub Sub Lista5() Dim i As Byte, s As Integer, ale As Byte s = 0 'Inicializamos la variable For i = 1 To 10 'generamos un nº aleatorio entre 1 y 100 ale = Int(Rnd() * 100) + 1 Cells(i + 4, "E") = ale s = s + ale 'Aculador Cells(i + 4, "F") = s Next i End Sub
Tercer Vídeo
- Fecha y hora del sistema con NOW
- NumberFormat para formatear una los valores de una celda
- Application.ScreenUpdating = False
- Application.ScreenUpdating = True
Sub Cronometro() Dim i As Long Worksheets("Hoja2").Activate Range("C4") = Now Application.ScreenUpdating = False For i = 1 To 10000 Cells(i, 2) = Int(Rnd() * 50000) + 1 Next i Application.ScreenUpdating = True Range("C5") = Now Range("C6") = Range("C5") - Range("C4") Range("C6").NumberFormat = "[hh]:mm:ss" End Sub
Cuarto Vídeo
- Bucles For...Next anidados
- Llamar a una macro con CALL
Sub Multiplica() Dim i As Byte, j As Byte Worksheets("Hoja3").Activate 'Call Borra Borra For i = 1 To 10 For j = 1 To 10 Cells(i + 1, j + 1) = i * j Next j Next i End Sub Sub Borra() Range("B2:K11").ClearContents End Sub
Quinto Vídeo
- Ejecución de bucles For...Next con un paso distinto de 1 usando STEP
- Paso negativo
- Reducción de variables para aligerar el código
Sexto Vídeo
- Acumular con macro. Tres métodos.
- Uso de Offset (desplazamiento) para trabajar usando varias celdas de dos formas:
- sin desplazar el cursor
- desplazando el cursor
Excelente de mucha ayuda, muchas gracias
ResponderEliminar