Ir al contenido principal

Seminario Macros Excel Gratuito 15 Entrega (Estructuras de programación o control 3ª parte)

Estructuras de Bucle

Cuando necesitamos que un proceso (instrucciones VBA) se repita un numero determinado de veces aparece la necesidad de crear bucles y para ello el VBA nos suministra varios tipos de estructuras.

Disponemos de las siguientes:
  • For..Next
  • While...Wend
  • Do While
  • Do Loop
  • For Each ...Next

For...Next

En general, la estructura For... Next se usa en aquellas situaciones en las cuales sabemos la cantidad de veces que queremos que se ejecute el bloque de instrucciones. En algunas ocasiones como máximo aunque también podemos salir antes si establecemos una condición de salida ... En su forma más típica y básica, esta estructura requiere una variable que cumple la función de un contador de ciclos. Normalmente usamos solo una letra según las convenciones mas habituales.

Ejemplo:
For i=1 to 10
 instrucciones
Next i

El ejemplo anterior repetiría las instrucciones 10 veces ya que la variable i empieza por 1 y cuando llega a la orden Next i se incrementa en una unidad.

También podemos hacer si nos interesa bucles inversos o que se incrementen en mas de una unidad y para ello usaremos el argumento step.

Ejemplo:
For i= 1 To 10 Step 2
    miFila = i
    Cells(miFila, 2) = i
Next i

al ejecutarlo obtendremos  lo siguiente:

Ejercicio:
Necesitamos crear una macro que cuente de 7 en 7  y vaya escribiendo en celdas el valor de dicho contador. El contador deberá empezar en -3 y terminar en 130. Deberá escribirse en la columna D desde la fila 1.

El resultado puede ser este:
Option Explicit
Dim i As Integer
Dim miFila As Integer
__________________________________________
Sub Ejercicio()
    
    miFila = 0
    For i = -3 To 130 Step 7
        Cells(1, "d").Offset(miFila, 0) = i
        miFila = miFila + 1
    Next

End Sub

Observamos el resultado:

 

Ejercicio Planteado:

Genere 100 celdas en la columna A con valores aleatorios entre 1 y 100 desde A1 y construya una macro que recorra esas 100 celdas y escriba a la derecha del primer valor 89 la palabra Localizado y finalice el recorrido.

Nota: Puede ocurrir que si no tiene ningún 89 no ponga nada

Para ver la solución puede pinchar en el siguiente enlace Ejercicio Planteado el cual se abrirá en nueva ventana y deberá descargarlo a su equipo como copia ya que las macros no funcionan en entorno Web.

En la próxima entrega explicamos la estructura While...Wend

Comentarios

Entradas populares de este blog

Chrome: desactivar la opción “Abrir siempre archivos de este tipo”

En Chrome, al descargar un archivo aparecen tres opciones en el desplegable de la barra de descargas:

Combinar Correspondencia con varias cuentas en Outlook

A veces necesitamos realizar un mailing (Combinar correspondencia) y disponemos de varias cuentas de correo en nuestro Outlook. Comprobamos que no funciona el elegir una de ellas como predeterminada ya que para el envío por correspondencia usa un servicio llamado MAPI que no usa la cuenta predeterminada.  Antiguamente en versiones como la 2010 de office simplemente con cambiar el fichero de datos predeterminado de la cuenta bastaba para ello. Actualmente (nosotros usamos 365, equivalente a la 2016) la solución pasa por crear un perfil de correo en el que configuremos la cuenta que usaremos para combinar correspondencia. Adjuntamos un video en el que se explica en Windows 10 como crear un perfil de correo de una cuenta. Una vez creado ese perfil de Correo pasaríamos a realizar la combinación de Correspondencia y en el último paso cuando  realizamos la combinación de correspondencia nos solicitará el perfil a usar para poder enviar los correos y en ese caso elegiríamos el perfil asociado

Gif animado en Camtasia studio 8

 Si deseamos colocar un gif animado en Camtasia Studio 8 observamos que no es posible de forma directa ya que al importarlo lo incluye dentro de imágenes. El truco es convertirlo en un fichero AVI y para ello no hay nada como disponer de la página de conversión: Online Convert Al incorporarlo a nuestra película lo considera lógicamente un clip de video Et voilá