Los operadores en VBA

operadores VBA excel

Los operadores son, en mi opinión, el componente más importante de los lenguajes de programación porque permiten calcular, comparar, validar y unir, las variables y las constantes declaradas en VBA. En definitiva, relaciona unos valores con otros.

Estos operadores pueden ser de varios tipos:

  • Operadores aritméticos: Sirven para hacer cálculos (suma, resta, multiplicación y división).
  • Operador de concatenación: Une los valores de dos variables o constantes (operador ampersand (&)).
  • Operadores de comparación: Evalúan si un valor es mayor, menor o igual que otro (igual (=), menor que (<), menor o igual a (<=), mayor que (>), mayor o igual a (>=), distinto a (<>).
  • Operadores lógicos: Se suelen utilizar para formar expresiones complejas (negación (Not), conjunción (And), disyunción (Not).

Vamos con ellos…

Operadores aritméticos

Los operadores aritméticos o matemáticos se utilizan para realizar operaciones matemáticas, como sumas, restas, multiplicaciones o divisiones. Te muestro cada uno en detalle:

Suma, resta, multiplicación y exponenciación

  • El operador más (+) se utiliza para añadir un valor a otro y también para concatenar cadenas.
  • El operador menos (-) se usa para hallar la diferencia entre dos o más números y también para mostrar un número como negativo.
  • El operador multiplicación (*) se utiliza para multiplicar un valor por otro.
  • El operador exponencial (^) se utiliza para elevar un número a la potencia de otro número.

División

La división se utiliza para obtener la fracción de un número en términos de otra, es decir, para dividir un número entre otro (evidente). En términos de VBA se pueden diferenciar dos tipos de división:

  • División entera: se utiliza cuando queremos que el resultado sea un número entero. Para ello se utiliza la barra invertida (\). Los operandos (que así es como se llama a los valores que intervienen) pueden ser cualquier tipo de número válido, con o sin decimales.
  • División decimal: Cuando queremos que el resultado de la operación sea un número decimales, debemos utilizar la barra normal (/).

Mira este ejemplo. Si tengo dos variables, a =9 y b = 4, el resultado de los dos tipos de división quedaría así:

a/b= 2,25

a\b=2

Mod

Para hallar el resto de una división, se utiliza el operador Mod. Este operador divide un valor entre otro y muestra “sobrante” en forma de número decimal.

Por ejemplo, si tengo dos variables a=7 y b=2, el resultado de la operación 7 Mod 2 sería 1.

Concatenación

Cuando se habla de concatenar, se quiere decir unir dos o más valores. Para unir tanto cadenas de texto como valores numéricos se utiliza el operador ampersand (&). Esta unión se hace en el orden en el que se introducen los operandos.

Observa el siguiente ejemplo:

ejemplo-operadores-vba

Para unir el nombre con el apellido dejando un especio en blanco, debes insertar el espacio como si fuese otra cadena más. El espacio debe ir entre comillas.

Operadores de comparación

Los operadores de comparación se llaman también relacionales y comparan valores y expresiones devolviendo siempre un resultado booleano: verdadero o falso.

Observa la siguiente tabla en la que te muestro algunos ejemplos de operadores de comparación.

Variable a Variable b Expresión Resultado
27 3 a>b Verdadero
35 7 a<b Falso
12 12 a=b Verdadero
12 12 a<>b Falso

¿Quieres un ejemplo? Echa un vistazo a este:

Sub ComparaNumeros()

Dim a, b As Integer

a = InputBox("Introduce el primer número")
b = InputBox("Introduce el segundo número")

If a = b Then
MsgBox ("Los dos números son iguales")
Else
If a &gt; b Then
MsgBox ("El primer número es mayor que el segundo")
Else
MsgBox ("El primer número es menor que el segundo")

End If
End If

End Sub

Operadores lógicos

Muchas veces los operadores de comparación por sí solos se quedan algo cortos para algunas necesidades. Los operadores lógicos solucionan este problema al permitir la combinación de varias expresiones simples para formar una más compleja.

  • El operador And (y) combina dos condiciones simples y devuelve un valor que es verdadero si estas dos condiciones son verdaderas. Por ejemplo (a >=6) And (b>=7).
  • El operador Or (o) devuelve el valor Verdadero cuando una de las dos expresiones es verdadera.
  • El operador Not (no) se utiliza sobre una sola condición para negar su valor.

Resumiendo…

Si eres usuario con un nivel medio-principiante de Excel, seguro que has utilizado ya algunos de estos operadores, sobre todo los aritméticos. A nivel de hoja (sin entrar en VBA), conocer el funcionamiento y la precedencia de estos operadores es muy útil para armar fórmulas condicionales o que contienen criterios.

Conparte este artículo en tus redes sociales.

Respuestas

  1. Sergio…

    ‘Problemas con el operador “>”. ¿Por qué pasa esto?

    Sub MayorQue()
    Dim strMayor As String
    Dim strMenor As String

    strMayor = “„|BAΩ¸€[j”
    strMenor = “„tDAΩ¸wšsP”

    ‘esto, en una celda, da resultado FALSO
    ‘=SI(“„|BAΩ¸€[j”>”„tDAΩ¸wšsP”;”VERDADERO”;”FALSO”)

    ‘en VBA, da resultado VERDADERO
    If “„|BAΩ¸€[j” > “„tDAΩ¸wšsP” Then
    MsgBox (“VERDADERO”)
    Else
    MsgBox (“FALSE”)
    End If
    If strMayor > strMenor Then
    MsgBox (“VERDADERO”)
    Else
    MsgBox (“FALSE”)
    End If

    ‘Hacemos lo mismo pasando strMayor y strMenor a codigos ASC
    ‘esto, en una celda, da resultado VERDADERO
    ‘=SI(“132 – 124 – 066 – 065 – 206 – 169 – 184 – 143 – 128 – 091 – 106″>”132 – 116 – 068 – 065 – 206 – 169 – 184 – 119 – 154 – 115 – 080″;”VERDADERO”;”FALSO”)

    ‘en VBA, tambien da resultado VERDADERO
    If DescomponerASC(strMayor) > DescomponerASC(strMenor) Then
    MsgBox (“VERDADERO”)
    Else
    MsgBox (“FALSE”)
    End If
    If “132 – 124 – 066 – 065 – 206 – 169 – 184 – 143 – 128 – 091 – 106” > “132 – 116 – 068 – 065 – 206 – 169 – 184 – 119 – 154 – 115 – 080” Then
    MsgBox (“VERDADERO”)
    Else
    MsgBox (“FALSE”)
    End If

    ‘Ergo, “el operador >” funciona bien en VBA y funciona mal en la HojaExcel
    ‘ Funcionan mal las ordenaciones en las HojaExcel…
    ‘ y las ordenaciones en ACCES (mal también)

    End Sub

    Function DescomponerASC(A As String) As String
    Dim L As Long

    DescomponerASC = “”
    For L = 1 To Len(A)
    DescomponerASC = DescomponerASC & Right(“00″ & Asc(Mid(A, L, 1)), 3) & ” – ”
    Next L
    DescomponerASC = Left(DescomponerASC, Len(DescomponerASC) – 3)
    End Function

    ‘Siento molestarte.

    Eduard

Los comentarios están cerrados.