Estructuras Condicionales. Instrucciones If y Select Case en VBA

En esta lección hablaremos de las instrucciones If y Select Case en VBA. Estas estructuras de control permiten evaluar una determinada condición y realizar una serie de acciones dependiendo del resultado de la evaluación. Por tanto, nos permiten tomar decisiones y ejecutar ciertas instrucciones sólo en los casos que nos interese.

Instrucción If… then en VBA

Las instrucciones If … then en VBA permiten comprobar una determinada condición y realizar una serie de acciones dependiendo de si el resultado de la evaluación es Verdadero (True) o Falso (False).

La sintaxis de esta estructura será la siguiente:

    If condicion = True Then
        instrucciones
    End If

Se evalúa una condición y, en caso de que sea verdadera, se realizan una serie de instrucciones.

instrucciones If  en VBA

Esta es una estructura que también utilizamos en el lenguaje hablado. Por ejemplo: Si llueve, coge el paraguas.

instrucciones SI en VBA

Veamos un ejemplo aplicado a una macro de Excel:

    If ActiveCell.Value = 0 Then
        MsgBox "El valor de la celda es 0"
    End If

Este código muestra un mensaje en pantalla en el caso de que el valor la celda activa sea 0.

Si solo se tiene que ejecutar una instrucción, como en el caso anterior, podríamos seguir esta estructura:

If condicion = True Then instruccion
If ActiveCell.Value = 0 Then MsgBox "El valor de la celda es 0"

También se puede dar el caso de que tengamos que ejecutar una serie de instrucciones si la condición es verdadera y otras si se evalúa como falsa. Seguiríamos esta sintaxis en VBA:

    If condicion = True Then
        instrucciones 
    Else
        instrucciones
    End If
instrucciones If  else en VBA

Veamos un ejemplo de la vida real para este tipo de estructura:

instrucciones If  else en VBA

No hace falta mucha explicación, ¿verdad? Si hace frio entonces sofá, manta y peli. Si no hace frio salimos a pasear. Es decir, una serie de acciones si se cumple la condición y otras acciones diferentes si no se cumple.

Apliquemos esta estructura a un ejemplo en una macro de Excel:

    If ActiveCell.Value >= 0 Then
        MsgBox "Es un número positivo"
    Else
        MsgBox "Es un número negativo"
    End If

Este código muestra un mensaje en pantalla en el caso de que el valor la celda activa sea mayor o igual a cero y un mensaje distinto en caso contrario.

Evaluar otra condición: Elseif

Podemos agregar instrucciones ElseIf a la instrucción If…Then…Else para evaluar otras condiciones si la primera condición es falsa. La sintaxis de la estructura sería:

If condicion1 = True Then
    instrucciones
ElseIf condicion2 = True Then
    instrucciones
ElseIf condicion3 = True Then
    instrucciones
...
End If

Veamos un ejemplo de código en una macro de Excel:

    nota = ActiveCell.Value
    If nota >= 9 Then
        MsgBox "SOBRESALIENTE"
    ElseIf nota >= 7 Then
        MsgBox "NOTABLE"
    ElseIf nota >= 6 Then
        MsgBox "BIEN"
    ElseIf nota >= 5 Then
        MsgBox "APROBADO"
    Else
        MsgBox "SUSPENDIDO"
    End If

Estas instrucciones evalúan la nota de un alumno que se ha introducido en la celda activa. Dependiendo del valor aparecerá un mensaje en pantalla que nos indicará si la nota corresponde a un Sobresaliente, notable, bien, aprobado o suspendido.

Desde este enlace puedes acceder a la Explicación del equipo Microsoft sobre esta estructura de control.

Utilizar los operadores lógicos en las instrucciones If y Select Case en VBA

Los operadores lógicos nos permiten evaluar más de una condición en una misma instrucción if…then. Los operadores más utilizados son AND y OR.

  • El operador AND unirá las condiciones con un Y lógico, es decir, se deberán cumplir todas las condiciones para que el resultado final sea verdadero.
  • El operador OR unirá las condiciones con un O lógico, es decir, si se cumple una o más de las condiciones el resultado final sea verdadero.

Veamos un ejemplo practico en VBA para Excel. Tenemos estos datos en nuestra hoja de Excel:

operadores lógicos en las instrucciones If y Select Case en VBA

Usamos este código uniendo las condiciones examen >=5 y practicas>=5 con un Y lógico:

examen = Range("B1").Value
practicas = Range("B2").Value
If examen >= 5 And practicas >= 5 Then
    MsgBox "APROBADO"
Else
    MsgBox "SUSPENDIDO"
End If

De esta forma, el alumno debe haber obtenido una nota mayor o igual que 5 en el examen Y en las prácticas para aprobar. En el ejemplo que se veía en la imagen el alumno habría suspendido.

Usamos el mismo código uniendo las condiciones con un O lógico:

examen = Range("B1").Value
practicas = Range("B2").Value
If examen >= 5 Or practicas >= 5 Then
    MsgBox "APROBADO"
Else
    MsgBox "SUSPENDIDO"
End If

En este caso el alumno estará aprobado si ha obtenido una nota mayor o igual que 5 en el examen O en las prácticas. En el ejemplo que se veía en la imagen el alumno habría aprobado.

Instrucción Select Case en VBA

Las instrucciones Select Case en VBA permiten evaluar una determinada expresión y ejecutar una serie de instrucciones dependiendo del valor de la expresión. Tienen la siguiente sintaxis:

Select Case Expresion
    Case opcion1 
        instrucciones
    Case opcion2 
        instrucciones
    Case opcion3 
        instrucciones
    ...
    Case Else  'si no se cumplen casos anteriores 
        instrucciones 
End Select

Valores admitidos para los distintos casos:

  • Un único valor. Por ejemplo, Case 2
  • Una lista de valores. Por ejemplo, Case 2,5,7
  • Un rango de valores. Por ejemplo, Case 2 To 5
  • Una condición. Por ejemplo, Case is >5

Ejemplo para evaluar una nota escrita en la celda activa:

    nota = ActiveCell.Value
    Select Case nota
    Case 10
        MsgBox "MATRÍCULA DE HONOR"
    Case 9 To 10
        MsgBox "SOBRESALIENTE"
    Case Is >= 7
        MsgBox "NOTABLE"
    Case Is >= 6
        MsgBox "BIEN"
    Case Is >= 5
        MsgBox "APROBADO"
    Case 0 To 3
        MsgBox "MUY DEFICIENTE"
    Case Else
        MsgBox "SUSPENDIDO"
    End Select

También puedes acceder a la Explicación del equipo Microsoft sobre este tipo de instrucciones

Después de esta explicación sobre las instrucciones If y Select Case en VBA os animamos a ver la entrada sobre las estructuras de bucles en VBA.

Diseño de macros en Excel. Con ejemplos prácticos

Esta entrada es parte de nuestro curso Diseño de macros en Excel. Con ejemplos prácticos

Diseño de macros en Excel. Con ejemplos prácticos

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *