Ir al contenido principal

Estructuras repetitivas en Macros de Excel

Es comun en el trabajo con macros ejecutar una instrucción mas de una vez. Ejemplo se tienen 25.000 registros con nombre y apellido y se quieren seprar aquellos que empiezan con "Lo". La solución que aparece a nuestra vista es repetir la instrución tantas veces como se necesite. ¿No estamos locos?. Para repetir 25.000 veces la misma instrucción. Pues aqui es donde se requiere el uso de estructuras repetitivas que facilite repetir una misma instrucción tantas veces como sea necesario.

Para el presente post solo vamos a hablar de la estructura FOR ... NEXT. Su estructura de funcionamiento se muestra a continuación:

Dim contador as Integer  ' Creación de un contador que va incrementando con cada ejecución
contador = 1
For contador To 25.000     ' Repita las instrucciones desde el valor del contador hasta 25000
       Instrucción a repetir 25000 veces
Next contador      ' Incremente el contador


Algunos ejemplos practicos

Ejemplo 1

Llenar un rango de 19 celdas con valores aleatorios

Sub LlenarRango()
Dim contador As Long
contador = 0
For contador = 0 To 19
    ActiveCell.Offset(contador, 0) = Rnd
Next contador
End Sub


Ejemplo 2

Llenar el rango de las casillas A1..A5 con valores pares consecutivos empezando por el 2.

Sub Pares()
Dim Fila As Integer
Dim i As Integer
Fila = 1
For i=2 To 10 Step 2
    ActiveSheet.Cells(Fila,1).Value = i
    Fila = Fila+1
Next i
End Sub

Otras estructuras repetitivas a considerar.


La siguiente información es tomada literalmente de http://www.xltoday.net/vba_bucles_intro.asp


Bucles Do… Loop
Repite las instrucciones mientras/hasta etc. una condición es TRUE/VERDADERO.

Do while… Loop
Repite las instrucciones mientras una condición es TRUE/VERDADERO.

Do until… Loop
Repite las instrucciones hasta que una condición se convierta en TRUE/VERDADERO.

While… Wend
Igual al bucle Do while… Loop.
 


Comentarios

  1. buenos dias! que bueno que encontre este blog, usualmente armo planillas de excell con algunas macros asignadas a botones, es decir trato de que el usuario no"toque" nada de la planilla excepto lo que necesita(para no borrar nada) los botones estan asignados a macros para , por ejemplo armar un base de datos pequeña con los datos de los contribuyentes, cuanto pagan en que fecha nombres diecciones etc, esta info la vuelco en unos recibieto que se imprimen (por todo el año separados por mes) para entregarselos al cobrador, hasta ahi vamos bien, pero cuando imprimo solo imprimo una planillita de recibos con todo un año solo pro un contribuyente, como puedo implementar qe repita el ciclo de impresion(siempre el mismo rango)hasta que imprima toda la lista de contribuyentes de la pequeña base? se puede hacer? graciasdssss marcelo de uruguay

    ResponderBorrar
  2. El Ejercicio 1 te manda a escribir 20 celdas... no 19

    ResponderBorrar

Publicar un comentario

Entradas más populares de este blog

Creando relaciones de confianza entre maquinas Linux por SSH

He buscado muchas veces sobre este mismo tema asi que hoy he decidido documentarlo para su posterior uso. De manera general una relación de confianza entre maquinas se establece con el objetivo de evitar la digitación de contraseña para acceso por terminal (ssh). Es decir que yo pueda acceder a una maquina y esta revise entre sus known_host (lista de equipos conocidos) y me permita acceso. Otra funcion importante es que se pueda realizar sincronizaciones mediante rsync y programadas por Cron evitando la intervención del usuario. Ahora si el procedimiento tecnico. Este proceso lo realize entre dos maquinas linux con sistemas operativos Ubuntu y Red Hat respectivamente. En el caso de la maquina con Ubuntu, escogi el usuario sobre el cual deseo crear la confianza. Este procedimiento hay que hacerlo con cada usuario en el cual desea evitar digitar la contraseña puesto que son entidades independientes con privilegios distintos dentro del S.O. usuario@ubuntu$ ssh-keygen - t rsa --

Configuración de una agregación de puertos (Link Aggregation) entre un switch HP 5500-48G EI y un DELL 6348

Las agregaciones de puertos nos permiten aumentar el ancho de banda de la conexión entre dos dispositivos, generalmente switches. En este caso puntual haré referencia a la configuración de una agregación de puertos entre un switch HP 5500-48G EI y un DELL 6348.  Luego de verificar con el soporte técnico (DELL), se encontró que la agregación dinámica no funciona correctamente por lo tanto fue necesario recurrir a la agregación estática. La agregación estática tiene como mayor diferencia que no utiliza el protocolo LACP ( Link Aggregation Control Protocol ). Sin más detalles la configuración en ambos switches: Configuración del switch DELL - Agregación de 4 puertos Giga para un ancho de banda total de 4Gbps Se crea un port-channel o un puerto lógico: interface port-channel 4 switchport mode trunk Cada una de las interfaces participantes de la agregación se configura con el número del grupo del port-channel: interface Gi1/0/33 channel-group 4 mode on swi

Ejercicio Condicionales usando Macros en Excel

La toma de decisiones es determinante en la secuencia de ejecución de una macro. Las herramientas que proporciona VBA para la toma de decisiones descansan en los condicionales. Un ejemplo de estructuras condicionales en Excel es la función "SI", la cual permite hacer una prueba lógica y tomar generar dos resultados posibles dependiendo si la prueba lógica es verdadera o falsa. "SI su estatura en metros es superior a 1.5 mts, puede ingresar a la montaña rusa, de lo contrario NO" . En la afirmación anterior solo aquellos niños con una estatura superior a 1.5 tendrán acceso al juego mecánico, los demás niños simplemente estarán excluidos del juego hasta que cumplan el requisito de forma imperativa. El lenguaje de macros permite 3 estructuras condicionales distintas: a) IIF(prueba_lógica, verdadero, falso). Su resultado obligatoriamente debe asignarse a una variable variable = IFF(3>1, "Verdadero", "Falso"). El tipo de variable p