VBA Múltiples (Anidadas) Sentencias If

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Dennis Madrid

Last updated on agosto 13, 2022

Este tutorial le mostrará cómo utilizar Sentencias  If anidadas en VBA.

Las Sentencias If  le permiten probar una sola condición en VBA para ver si la condición es Verdadera o Falsa, y dependiendo de la respuesta, el código se moverá en la dirección de la sentencia verdadera o la falsa.

Una Sola Sentencia IF

Sub PruebaIf()
    Dim x As Integer
    x = 10
    If x = 10 Then
    'si x es 10, la condición es verdadera
      MsgBox "x es 10"
    Else
    'si x no es 10, la condición es falsa
      MsgBox "x No es 10"
   End If
End Sub

Explicación de los IFs anidados

Un If anidado le permite poner múltiples condiciones dentro de cada una de las sentencias Verdadero y/o Falso del If original.

Sub PruebaIfAnidado()
    Dim x As Integer
    Dim y As Integer
    Dim z As Integer
    x = 10
    y = 9
    z = 8
    If x = 10 Then
    'si x es 10, la condición es verdadera así que prueba para y
       If y = 9 Then
           MsgBox "y es 9"
       Else
    'si y no es 9, la condición es falsa
           MsgBox "y no es 9"
       End If
    Else
    'si x no es 10 entonces la condición es falsa, entonces probemos z
       If z = 8 Then
          MsgBox "z es 8"
       Else
    'si z no es 8, la condición es falsa
          MsgBox "z no es 8"
       End If
    'se necesita otro End If para cerrar el original si
    End If
End Sub

Indentar su código cuando lo escribe siempre es una buena práctica, ya que hace que el código sea fácil de leer y seguir cuando tenga que volver a él en algún momento, o cuando otro programador tenga que leerlo.

También podemos crear una función diseñada por el usuario (UDF) y llamar los valores de algunas celdas de Excel a la función utilizando parámetros.

Function GetIf(x As Integer, y As Integer, z As Integer) As String
   If x = 10 Then
    'si x es 10, la condición es verdadera así que prueba para y
          If y = 9 Then
             GetIf = "y es 9"
          Else
    'si y no es 9, la condición es falsa
             GetIf = "y no es 9"
          End If
       Else
    'si x no es 10 entonces la condición es falsa, entonces probemos z
          If z = 8 Then
               GetIf = "z es 8"
          Else
    'si z no es 8, la condición es falsa
             GetIf = "z no es 8"
          End If
    'se necesita otro End If para cerrar el If Original
    End If
End Function

Función Anidada GetIf

 

Ejemplo Práctico de IF anidado

Considere la siguiente función:

Function GetDiscount(dblPrice As Double) As Double
    If dblPrice >= 1000 Then
    'si el precio es superior a 1000, asignar un descuento
          If dblPrice >= 2000 Then
    'si es superior a 2000, dar un 10% de descuento
             GetDiscount = dblPrice * 0.1
          Else
    'si no, dar un 5% de descuento
             GetDiscount = dblPrice * 0.05
          End If
    'si el precio no es superior a 1000
       Else
    'si es superior a 500, se aplica un descuento del 2,5%.
          If dblPrice >= 500 Then
              GetDiscount = dblPrice * 0.025
          Else
    'si no, no hay descuento
             GetDiscount = 0
          End If
    'se necesita otro End If para cerrar el If original
    End If
End Function

Usando esta función en una hoja de Excel, podemos probar para ver el precio total de un pedido, y aplicar diferentes descuentos dependiendo de ese total.

Función Anidada GetDiscount

 

Utilizando ElseIf

ElseIf nos permite simplificar su código, ya que sólo pasa a la segunda sentencia if si la primera devuelve un false.

Function GetDiscount(dblPrice As Double) As Double
    'utilizar else if para reducir la escritura de código
   If dblPrice >= 2000 Then
      GetDiscount = dblPrice * 0.1
    ElseIf dblPrice >= 1000 Then
       GetDiscount = dblPrice * 0.075
    ElseIf dblPrice >= 500 Then
       GetDiscount = dblPrice * 0.05
    ElseIf dblPrice >= 200 Then
       GetDiscount = dblPrice * 0.025
    ElseIf dblPrice >= 100 Then
       GetDiscount = dblPrice * 0.01
    Else
      GetDiscount = 0
    End If
End Function

Función Anidada GetDiscount ElseIf

 

Utilizando una Sentencia Case

También podemos utilizar una sentencia Case para conseguir el mismo efecto.

Function GetDiscount(dblPrice As Double) As Double
    Select Case dblPrice
    'Esta Sentencia Case tiene 6 niveles de descuento diferentes
    Case Is >= 2000
       GetDiscount = dblPrice * 0.1
    Case Is >= 1000
       GetDiscount = dblPrice * 0.075
    Case Is >= 500
       GetDiscount = dblPrice * 0.05
    Case Is >= 200
       GetDiscount = dblPrice * 0.025
    Case Is >= 100
       GetDiscount = dblPrice * 0.01
    Case Else
       GetDiscount = 0
    End Select
End Function

Función Anidada GetDiscount Case

vba-free-addin

Complemento de Ejemplos de Código de VBA

Acceda fácilmente a todos los ejemplos de código que se encuentran en nuestro sitio.

Simplemente navegue al menú, haga clic y el código se insertará directamente en su módulo. Complemento .xlam.

(¡No se requiere instalación!)

Descarga gratuita

Return to VBA Code Examples