Está en la página 1de 9

LECCIÓN 6: INSTRUCCIONES EN EXCEL

Excel no es nada sin los condicionales y los bucles. Este apartado es crucial puesto que es la base de casi todo lo que
harás en VBA para Excel.

Usar condicional IF en VBA


Uno de los elementos más frecuentes en VBA es usar la instrucción IF en VBA. Nos permite usar condiciones durante
nuestro código ejecutando ciertas partes de él en función de alguna prueba lógica.

TIPO 1

La sintáxis más sencilla, la que básicamente utilizaremos el 90% de nuestro tiempo es la siguiente:

If comprobación_lógica then

Código que se ejecuta cuando la instrucción es verdadera

End if

Si queremos hacer instrucciones muy sencillas podremos ponerlo en una misma línea:

IF comprobación_lógica Then Instrucción

En el siguiente ejemplo tenemos el mismo condicional de las dos formas más arriba explicadas. La instrucción que se
ejecuta es rellenar una celda con el color amarillo.

TIPO 2

Para instrucciones en las que tenemos un árbol de decisión en las que queremos ejecutar algo si es verdadero y otra
cosa si es falso tendremos la siguiente sintaxis.

If comprobación_lógica Then

Código que se ejecuta cuando la instrucción es verdadera

Else

Código que se ejecuta cuando la instrucción es falsa

End if

En el siguiente ejemplo vemos que si se cumple la condición la primera celda A1 se coloreará de amarillo y sino de rojo.
TIPO 3

Si queremos añadir otra condición de comprobación entre medias de nuestro condicional cuando la primera instrucción
resulta ser falsa la sintaxis que usaremos es la siguiente:

If comprobación_lógica Then

Código que se ejecuta cuando la comprobación es verdadera

ElseIf comprobación_lógica2 Then

Código que se ejecuta cuando la comprobación 2 es verdadera

End if

En el siguiente ejemplo vemos como, si se cumple la primera comprobación, la celda A1 se pondrá en verde o si se
cumple la segunda comprobación, la celda A1 se pondrá en rojo.

Doble condicional en VBA


El uso de la instrucción IF en VBA es de necesario conocimiento para cualquier persona que esté empezando a
programar en VBA. En este artículo queremos explicar como el uso del IF en VBA no está prácticamente limitado y nos
permite hacer condicionales anidadas.

EJEMPLOS DE DOBLE CONDICIONAL EN VBA

Fundamentalmente hay dos maneras para hacer una doble condicional en VBA. Usaremos un ejemplo para entenderlo
mejor.

Tenemos los siguientes datos A1=3 y A2=4

Queremos comprobar que en las celdas A1 y A2 tenemos valores mayores de 0. Para eso podemos hacer dos IF uno
dentro de otro o un único IF pero con un AND

EJEMPLO1: IF DOBLE

El uso más ilustrativo y más fácil de entender es en el que usamos una instrucción IF dentro de otra instrucción IF. En el
siguiente ejemplo veremos como
If Range("A1") > 0 Then

If Range("A2") > 0 Then

'Código que haremos si se verifica

End If

End If

Este tipo de condicional puede ser muy útil y fácil de leer pero en ocasiones, cuando no tenemos la opción de False del
código porque no hace falta, pero puede parecer más sencillo hacer un Condicional con IF y AND como veremos en el
siguiente ejemplo.

EJEMPLO 2: IF Y AND

En una misma línea de código unimos las dos instrucciones IF mediante el conector AND.

If Range("A1") > 0 And Range("A2") > 0 Then

'Código que haremos si se verifica

End If

Esta última manera para más sencilla y limpia que la anterior. Hay menos líneas lo que lo hace más comprensible.

EJEMPLO 3: IF Y OR

En este último ejemplo veremos como se pueden poner dos condiciones en las que sólo hay que cumplir una de ella.
Para ello usaremos el método OR de VBA que nos permitirá enlazar dos condicionales en VBA

If Range("A1") > 0 OR Range("A2") > 0 Then

'Código que haremos si se verifica

End If

Entre el ejemplo 2 y el ejemplo 3 sólo varía que usamos AND u OR. Esto hace que en el ejemplo 2 se tengan que cumplir
las dos condiciones y en el ejemplo 1 sólo haga falta que se cumpla una de ellas.

El bucle For Next en VBA

Una de las cosas que más me gustan de VBA es que puede hacer por ti cosas tan increíbles como repetir un montón de
veces lo mismo sin apenas esfuerzo.

Este es el caso del bucle For Next en VBA y dirás, ¿qué es un bucle en VBA? Pues es la repetición de cierto código un
número determinado de veces.

SINTAXIS

El bucle FOR NEXT en VBA nos permite en Excel (o cualquier otro lenguaje de programación) repetir una acción un
número de veces dado. Su sintaxis es la siguiente:
For CONTADOR = COMIENZO To FINAL [Step VALOR_DE_PASO]

'código

[Exit For]

'código

Next

Donde:

CONTADOR: es la variable numérica de control del bucle

COMIENZO: es el valor numérico donde comenzará el CONTADOR. Es un número entero.

FINAL: es el valor numérico hasta donde contará el CONTADOR.

Step VALOR_DE_PASO: opcional. Valor numérico que irá sumándose al CONTADOR a lo largo del bucle. Es un numero
natural.

‘código: es el código de la expresión que queremos que se ejecute dentro del bucle todas las veces.

Exit For: sentencia opcional que nos permite salir del bucle y continuar la macro a partir del NEXT final sin necesidad de
haber recorrido el bucle completamente.

EJEMPLOS

A continuación, vamos a ver una serie de ejemplos que nos permitan entender mejor el bucle FOR NEXT en VBA. En cada
ejemplo veremos una particularidad en concreto de este tipo de bucles y se explicará.

Ejemplo 1:

En este ejemplo tenemos el bucle FOR NEXT en VBA más sencillo. El bucle cuenta de 1 a 10 y va poniendo en una
columna el valor del contador.

For CONTADOR = 1 To 10

fila = CONTADOR

Cells(fila, 1) = CONTADOR

Next

Ejemplo 2:

En este ejemplo añadimos la propiedad «step 2» que incrementará el contador de 2 en 2. Es decir, inicialmente el
contador valdrá 1, luego 3, luego 5 y así sucesivamente.

For CONTADOR = 1 To 10 Step 2

fila = CONTADOR

Cells(fila, 2) = CONTADOR

Next

Ejemplo 3:

En este ejemplo el bucle for next en vba va contando hacia atrás gracias al step -1 y al contador que empieza en vez de
en 1 en 10 y acaba en 1.
For CONTADOR = 10 To 1 Step -1

fila = CONTADOR

Cells(fila, 3) = CONTADOR

Next

Ejemplo 4:

En este ejemplo utilizamos la expresión Exit For cuando el contador llega hasta 49 y lanzamos un mensaje en pantalla en
este momento.

For CONTADOR = 10 To 100

If CONTADOR = 49 Then

MsgBox "El contador ha llegado al número " & CONTADOR

Exit For

End If

Next

Ejemplo 5:

En este ejemplo usamos un código muy similar al anterior, pero añadimos al final del IF (ver más sobre IF en VBA) otro
pedacito de código.

For CONTADOR = 10 To 100

If CONTADOR = 49 Then

MsgBox "El contador ha llegado al número " & CONTADOR

Exit For

End If

fila = CONTADOR

Cells(CONTADOR, 5) = CONTADOR

Next

EJERCICIO

El ejercicio que proponemos es el siguiente:

Crea una macro con el bucle FOR NEXT en VBA que cuente de 5 en 5 y vaya poniendo en celda sucesivas el valor del
contador. El contador deberá empezar en 0 y terminar en 100. Deberá escribirse en la columna F desde la fila 1 hasta la
fila 20.
fila = 0

For CONTADOR = 0 To 100 Step 5

Cells(1, "f").Offset(fila, o) = CONTADOR

fila = fila + 1

Next

El truco consiste en utilizar la función OFFSET para ir avanzando a lo largo de las filas. La variable fila se incrementa en
uno cada vez que se recorre el bucle.

En el siguiente enlace podéis descargar un libro de Excel que contiene las diferentes macros que hemos ido viendo y así
podréis modificarlas y aprender a usarlas como un verdadero experto el bucle FOR NEXT en VBA.

Bucle Do While en VBA


En programación en general y el VBA en particular los bucles son métodos muy utilizados. Un ejemplo clásico de bucle es
el For Next (puedes ver más información aquí). En este tutorial explicaremos cómo se usa el bucle Do While en VBA.

SINTAXIS Y FUNCIONAMIENTO

El funcionamiento del bucle Do While en VBA es muy sencillo, repetiremos una acción tantas veces que sea necesario
siempre y cuando se evalúe una condición. Por ejemplo, iremos avanzando a lo largo de una columna por todas sus
celdas e iremos sombreando en amarillo hasta que una celda sea mayor que un valor dado.

La sintaxis puede resultar un poco compleja inicialmente, pero una vez que veamos algunos ejemplos quedará
perfectamente. La sintaxis se compone de las siguientes partes

Do While Mi_expresion
[Nuestro código 1]
[Exit Do]
[Nuestro código 2]
Loop
o también de la forma
Do
[Nuestro código 1]
[Exit Do]
[Nuestro código 2]
Loop While Mi_expresion
Donde en el primer caso evaluaremos inicialmente la expresión que queremos del tipo verdadero o falso y en el segundo
caso lo evaluaremos después. Esto nos permitirá jugar un poco con el bucle.

Recordemos que:

Lo que esté en corches no es fundamental

Mi_expresión: es una condición lógica que devuelve verdadero o falso. Si se evalúa como verdadero el bucle continuará,
sino, se terminará.

Exit Do: nos permitirá salir del bucle en cualquier momento dada una condición (por ejemplo si hemos repetido el bucle
mil veces)

Nuestro código 1 o 2: este será el código que ejecutemos dentro del bucle. Puede ponerse antes, después o en ambas
posiciones respecto del Exit Do.
EJEMPLOS DEL BUCLE DO WHILE EN VBA

A continuación vamos a ver una serie de ejemplos que queremos para que se pueda entender mejor cómo funciona el
bucle Do While en VBA.

EJEMPLO 1

En este ejemplo vamos a sombrear en amarillo las celdas del rango que sean uno hasta que dejen de serlo.

Dim mi_rango, c As Range

Set mi_rango = Range("a1:a10000")

Set c = mi_rango(1)

Do While c.Value = 1

c.Interior.Color = vbYellow

Set c = c.Offset(1, 0)

Loop

EJEMPLO 2

En el siguiente ejemplo vamos a sombrear en amarillo todas las celdas que sean menores que 100, pero si encontramos
una celda menor que 50 saldremos del bucle:

Set c = Range("b1")

Do While c.Value < 100

If c.Value < 50 Then Exit Do 'salgo del bucle

c.Interior.Color = vbYellow

Set c = c.Offset(1, 0)

Loop

EJEMPLO 3

En este tercer ejemplo vamos a poner a la derecha de la celda que se está evaluando un OK si evaluamos que su valor es
menor que 100 y mayor que 50. Esto nos permitirá ver que en la condición lógica que vamos a evaluar podemos utilizar
el and para hacer una doble evaluación.

Set c = Range("c1")

Do

c.Offset(0, 1) = "OK"

Set c = c.Offset(1, 0)

Loop While c.Value < 100 And c.Value > 50

EJEMPLO 4

En el siguiente ejemplo vamos a ver cómo se puede también utilizar una expresión anidada con Or para evaluar una
condición.
Set c = Range("e1")

Do While c.Value > 60 Or c.Value < 20

c.Offset(0, 1) = "OK"

Set c = c.Offset(1, 0)

Loop

Select Case en VBA


La instrucción Select Case en VBA es uno de los métodos más fáciles y utilizados en Excel cuando se trata de asignar y
clasificar en función de una única variable con varios posibles resultados. En este tutorial vamos a ver su sintaxis, sus
parámetros y cómo usarla con varios ejemplos muy sencillos.

SINTAXIS

La sintaxis de la instrucción Select Case en VBA es muy sencilla pero hay que saber cómo usarla para sacarle verdadero
partido. En el siguiente recorte de código VBA puedes ver cómo es la sintaxis.

Select Case mi expresión


Case mi_expresion_1
'código para expresion_1
Case mi_expresion_2
'código para expresion_2
'...
Case mi_expresion_n
'código para expresion_n

Case Else
'código para cuando no hay coincidencias
End Select

Donde:

mi_expresión: es una variable que queremos evaluar. Puede ser numérica o de tipo texto y será contra la que evaluemos
mi_expresion_1, mi_expresion_2…

mi_expresion_1,2…n: es un valor o conjunto de valores numéricos o de texto contra los que se evaluará mi_expresion.
En caso de evaluarse como verdadera se ejecutará el código… sino, pasará a evaluar la siguiente mi_expresion_n.

Case Else: este valor es opcional y lo usaremos para cuando no hayamos conseguido ninguna equivalencia con
mi_expresión y queramos ejecutar algún código.

EJEMPLOS

EJEMPLO1

En el siguiente ejemplo vamos a ver el caso más sencillo de Selec Case en VBA. Las condiciones que se evalúan tienen
que ser iguales a la expresión inicial. En este ejemplo se quiere evaluar la variable Nombre. En función del Nombre se
asignará un valor de color de fondo u otro.
Select Case Nombre
Case "Enrique"
color_fondo = vbYellow
Case "Juan"
color_fondo = vbRed
Case Else
color_fondo = vbWhite
End Select

EJEMPLO 2

En este ejemplo se evalúa la variable Edad y en función de su valor (dado por intervalos) se da un atributo a la variable
tipo_edad.

Select Case Edad


Case 1 To 14
tipo_edad = "niño"
Case 15 To 20
tipo_edad = "adolescente"
Case Else
tipo_edad = "adulto"
End Select

EJEMPLO 3

En este ejemplo, en función de la primera letra del ID (que es la variable que vamos a evaluar) asignaremos un valor a la
variable tipo para clasificar el Primer_numero_ID.

Select Case Primer_numero_ID

Case 1, 2, 3
tipo = "grupo1"
Case 4, 5, 6
tipo = "grupo2"
Case Else
tipo = "grupo3"
End Select

EJEMPLO 4

Por último, en este ejemplo, para evaluar la variable Altura, las condiciones que se utilizan son expresiones aritméticas.

Select Case Altura


Case Is < 140
tipo = "bajito"
Case Is < 170
tipo = "mediano"
Case Else
tipo = "alto"
End Select

También podría gustarte