Este tutorial le mostrará cómo usar declaraciones If anidadas en VBA
Si las declaraciones 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 declaración verdadera o falsa.
Una sola declaración IF
1234567891011 | Prueba secundaria SiDim x como enterox = 10Si x = 10 entonces'si x es 10, la condición es verdaderaMsgBox x mide 10 "Demás'si x no es 10, la condición es falsaMsgbox "x no es 10"Terminara siEnd Sub |
Explicación de los IF anidados
Un If anidado le permite poner múltiples condiciones DENTRO de cada una de las declaraciones Verdadero y / o Falso del If original.
1234567891011121314151617181920212223242526 | Sub TestNestedIf ()Dim x como enteroDim y como enteroDim z como enterox = 10y = 9z = 8Si x = 10 entonces'si x es 10, la condición es verdadera, así que prueba para ySi y = 8 entoncesMsgBox "y es 9"Demás'si y no es 10, la condición es falsaMsgbox "y no es 9"Terminara siDemás'si x no es 10 entonces la condición es falsa, entonces' probemos para zSi z = 8 entoncesMsgBox "z es 8"Demás'si z no es 8, la condición es falsaMsgbox "z no es 10"Terminara si'Otro Fin Si es necesario para cerrar el original siTerminara siEnd Sub |
Sangrar 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 tiene que volver a él en algún momento, o cuando otro programador tiene que leerlo.
También podríamos crear una función diseñada por el usuario (UDF) y llamar los valores de algunas celdas desde Excel a la función usando parámetros.
1234567891011121314151617181920 | Función GetIf (x como Integer, y como Integer, z como Integer) como StringSi x = 10 entonces'si x es 10, la condición es verdadera, así que prueba para ySi y = 8 entoncesGetIf = "y es 9"Demás'si y no es 10, la condición es falsaGetIf = "y no es 9"Terminara siDemás'si x no es 10 entonces la condición es falsa, entonces' probemos para zSi z = 8 entoncesGetIf = "z es 8"Demás'si z no es 8, la condición es falsaGetIf = "z no es 10"Terminara si'Otro Fin Si es necesario para cerrar el original siTerminara siFunción final |
Ejemplo práctico anidado si
Considere la siguiente función:
12345678910111213141516171819202122 | Función GetDiscount (dblPrice As Double) As DoubleSi dblPrice> = 1000 Entonces'si el precio es superior a 1000, asigne un descuentoSi dblPrice> = 2000 Entonces'si es mayor que 2000, dé un 10% de descuentoGetDiscount = dblPrice * 0.1Demás'de lo contrario, da un 5% de descuentoGetDiscount = dblPrice * 0.05Terminara si'si el precio no es superior a 1000Demás'si es mayor de 500, otorgue un descuento del 2.5%Si dblPrice> = 500 EntoncesGetDiscount = dblPrice * 0.025Demás'de lo contrario no hay descuentoGetDiscount = 0Terminara si'Otro Fin Si es necesario para cerrar el original siTerminara siFunción final |
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.
Programación VBA | ¡Code Generator funciona para usted!
Usando ElseIf
ElseIf nos permite simplificar su código, ya que solo se movió hacia la segunda instrucción if si la primera devuelve un falso.
12345678910111213141516 | Función GetDiscount (dblPrice As Double) As Double'use else if para reducir la escritura de códigoSi dblPrice> = 2000 EntoncesGetDiscount = dblPrice * 0.1ElseIf dblPrice> = 1000 EntoncesGetDiscount = dblPrice * 0.075ElseIf dblPrice> = 500 EntoncesGetDiscount = dblPrice * 0.05ElseIf dblPrice> = 200 EntoncesGetDiscount = dblPrice * 0.025ElseIf dblPrice> = 100 EntoncesGetDiscount = dblPrice * 0.01DemásGetDiscount = 0Terminara siFunción final |
Uso de una declaración de caso
También podemos usar una declaración de caso para lograr el mismo efecto.
1234567891011121314151617 | Función GetDiscount (dblPrice As Double) As DoubleSeleccionar caso dblPrecio'esta declaración de caso tiene 6 niveles de descuento diferentesEl caso es> = 2000GetDiscount = dblPrice * 0.1El caso es> = 1000GetDiscount = dblPrice * 0.075El caso es> = 500GetDiscount = dblPrice * 0.05El caso es> = 200GetDiscount = dblPrice * 0.025El caso es> = 100GetDiscount = dblPrice * 0.01Caso otroGetDiscount = 0Finalizar SeleccionarFunción final |