Tomando Decisiones en VBA, Parte V

A veces se necesita evaluar múltiples condiciones para el valor de una variable. Esto puede hacerse utilizando una serie de If – Then o una estructura If Then ElseIf Then con múltiples ElseIf. Una forma mas clara, elegante y fácl de seguir es utilizando una estructura Select Case – Case – [Case Else] – End Select.

Anuncios

Select Case – Case – [Case Else] – End Select

A veces se necesita evaluar múltiples condiciones para el valor de una variable, o en algunos casos tomar la misma acción para múltiples condiciones. Esto puede hacerse utilizando las estructuras que ya hemos visto: una serie de If – Then o una estructura If Then ElseIf Then con múltiples ElseIf.

En las siguientes figuras mostraremos las diferentes estructuras que podemos utilizar para asignar una evaluación de acuerdo a el valor de la variable Nota.

Podemos utilizar una estructura If – Then – ElseIf – [Else] – End If con multiples Else If, donde cada declaración Else If – Then evalúa una condición de la variable Nota.

ElseIf-6

Otra forma, aunque menos elegante, es utilizar una serie de declaraciones If – Then. Donde colocamos cada evaluación en una declaración If – Then. Para evitar que se continúe, luego de que alguna condición sea verdadera (True) se añadió la declaración GoTo. Esto produce que luego de evaluar verdadera (True) una condición el programa salga y no continúe evaluando otras condiciones. En este caso GoTo se direcciona a la etiqueta Fin, la cual esta al final produciendo la salida del procedimiento.

decision-5

Una forma mas clara, elegante y fácil de seguir es utilizando una estructura Select Case – Case – [Case Else] – End Select.

La sintaxis de esta estructura es

Variable=Expresión

Select Case Variable

Case valor, lista o rango de valores

Declaraciones

Case valor, lista o rango de valores

Declaraciones

Case valor, lista o rango de valores

Declaraciones

Case Else

Declaraciones

End Select

En cada Case se evalúa una condición, donde se pregunta si la variable adopta un valor, lista o rango de valores, en caso de evaluar verdadera (True) la condición, se ejecutan las declaraciones asociadas a ese Case y finaliza la ejecución de la estructura Select Case.

El comando Case Else es opcional, y se coloca para detectar si no se cumple ninguna de las condiciones declaradas con Case.

En la siguiente figura se muestra el procedimiento Decision6(), donde se ve la claridad, lo fácil de seguir y entender la serie de condiciones evaluadas en la estructura Select Case.

decision-6

 

Declaraciones que incluyen Is y To

Cuando la condición a evaluar con el comando Case es  una expresión relacional, esta debe ser introducida con el comando Is. La sintaxis es la siguiente:

Variable=Expresión

Select Case Variable

Case Is Expresión Relacional

Declaraciones

Case Is Expresión Relacional

Declaraciones

End Select

Los operadores relacionales son =, <, <=, >, >=, <>

Ejemplo:

Public Sub Decision7()

Nota = Worksheets(“Hoja3”).Range(“A6”).Value

Select Case Nota

Case Is >90

Worksheets(“Hoja3”).Range(“B6”) = “A”

Case Is >75

End Select

End Sub

El comando To se utiliza para establecer un rango de valores, en el procedimiento Desicion6() se utilizan rangos para establecer las condiciones introducidas con el comando Case. La sintaxis es:

Case valor1 To valor2

A continuación se muestra fragmento del procedimiento Desicion6().

Public Sub Decision6()

Nota = Worksheets(“Hoja3”).Range(“A6”).Value

Select Case Nota

Case 91 To 100

Worksheets(“Hoja3”).Range(“B6”) = “A”

Case 76 To 90

Worksheets(“Hoja3”).Range(“B6”) = “B”

Case 66 To 75

Worksheets(“Hoja3”).Range(“B6”) = “C”

End Select

End Sub

 

Referencias Bibliográficas

Korol, J. (2003). Learn Microsoft Excel 2002 VBA Programming with XML and ASP. Plano, Texas, USA: Wordware Publishing, Inc.

Shepherd, R. (2010). Excel 2007 Macro Programming. New York: McGraw Hill.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s