Tomando Decisiones en VBA, Parte I

Como la mayoría de los lenguajes de programación VBA ofrece la posibilidad de tomar decisiones en base al cumplimiento de una o mas clausulas. Para evaluar una clausula se utilizan operadores relacionales y lógicos en conjunción con los comandos If, Then, Else, ElseIf, End If.

Operadores Relacionales

Los operadores relacionales se utilizan para comparar dos elementos. Los operadores relacionales utilizados en VBA son los siguientes:

Operador Descripción
= Igual a
<> Diferente (no igual)
> mayor que
< menor que
>= mayor o igual que
<= menor o igual que

Operadores Lógicos

Los operadores lógicos permiten enlazar varias expresiones relacionales para evaluar el cumplimiento o no de varias condiciones simultáneamente.

Los operadores lógicos mas comunes utilizados en VBA son:

Operador Descripción
AND Y
OR O
NOT NO

Operador Lógico AND

Cuando varias expresiones relacionales se unen con el operador lógico AND, todas las expresiones deben ser evaluadas verdaderas (TRUE) para que el resultado final sea verdadero (TRUE). Basta con que solo una de las expresiones sea falsa para que el resultado sea falso (FALSE).

Cuando varias expresiones se unen con el operador lógico AND es análogo a tener una serie de resistencias conectadas en serie. Basta con que una de las resistencias este quemada (FALSE) para que no exista continuidad en el circuito.

serie-true-1

serie-true-2

Otra forma clásica de analizar los operadores lógicos es utilizando las tablas de la verdad.

Expresión Relacional 1 Expresión Relacional 2 Resultado de Expresión Lógica AND
True True True
True False False
False True False
False False False

Por ejemplo coloquemos en la celda B1 un valor y escribamos un procedimiento para desplegar un mensaje si se cumple la condición de que el valor de la celda B1 este en el intervalo entre 50 y 75. Esto equivale a utilizar dos expresiones una para evaluar si Range(“B1”) es mayor de 50 y otra para evaluar si Range(“B1”) es menor de 75, y ambas condiciones deben ser verdaderas.

Range(“B1”).Value>50 AND Range(“B1”)<75

Operador Lógico OR

Al usar el operador lógico OR para evaluar una serie de expresiones, si al menos una de las expresiones evaluadas es verdadera (TRUE) la expresión lógica completa es verdadera.

Cuando varias expresiones se unen con el operador lógico OR es análogo a tener una serie de resistencias conectadas en paralelo. Basta con que una de las resistencias este activa (TRUE) para que el circuito tenga continuidad (TRUE). Para que no exista continuidad en el circuito todas las resistencias deben estar quemadas (FALSE).

Construyendo una tabla de la verdad para el operador lógico OR tenemos:

Expresión Relacional 1 Expresión Relacional 2 Resultado de Expresión Lógica OR
True True True
True False True
False True True
False False False

Como podemos observar la única situación donde una serie de expresiones unidas con el operador lógico OR da Falso (False) es cuando todas las expresiones son evaluadas falso (False).

Ejemplo: supongamos que en lugar de requerir los valores que están en el intervalo 50-75, queremos los valores que no pertenecen a este intervalo.

Range(“B1”).Value<=50  OR  Range(“B1”).Value>=75

Si se cumple alguna de estas dos relaciones para el valor evaluado, entonces la expresión lógica completa seria verdadera (TRUE).

Operador Lógico NOT

Este operador invierte el resultado de la evaluación de una expresión relacional. Es decir si una expresión es evaluada como verdadera (TRUE), el operador NOT la convierte en una expresión falsa.

por ejemplo si queremos seleccionar los valores que no sean mayores de 50 podemos comenzar preguntando cuales son los valores mayores de  50, y luego al utilizar el operador lógico NOT invertiríamos el resultado a falso.

Range(“B1”).value > 50           ‘ True si valor es mayor de 50

NOT Range(“B1”).value > 50   ‘ False si valor es mayor de 50

Si en la celda B1 esta un valor de 20, la primera condición evaluada daria un resultado Falso (false), debido a que 20 no es mayor que 50.

En la segunda clausula, al anteponer el Operador lógico NOT, hace que el resultado sea verdadero (True).

Anuncios

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