Sei sulla pagina 1di 15

1

Operadores Matemáticos en VBA

Los operadores aritméticos nos permiten realizar cálculos matemáticos. VBA


maneja la mayor parte de los operadores aritméticos habituales en los
lenguajes de programación:

En general, el tipo devuelto por la ejecución de la operación, es el del tipo del


más preciso de los operadores, salvo que el resultado supere su rango; en ese
caso devolverá el siguiente tipo de mayor precisión. Esta regla tiene muchas
excepciones.

Si se trata de asignar un resultado fuera del rango de valores de la variable que


va a recibir el resultado de la operación, se generara un error de
“Desbordamiento” y se interrumpirá la ejecución del código, salvo que el error
fuera capturado y tratado.

Cabe destacar que existe el valor Empty, el cual VBA lo trata como el valor
cero y se maneja igual que el cero para cualquier operación aritmética (fuera de
VBA).

Operador Suma (+)

Sirve para asignar el resultado de la suma de dos números. La forma de usarlo


es:

Resultado = val1 + val2


Val1 y val2 son los operándos, pudiendo ser cualquier valor numérico o
expresiones que lo generen. La variable resultado no tiene por que ser del
mismo tipo de variable que los operándos.

VBA permite utilizar como operándos tipos numéricos distintos. Por ejemplo
podemos usar un “Byte” con un “Long” o con un tipo “Date”. Cuando se utilizan
tipos distintos, VBA cambia el menos preciso al tipo más preciso. Por ejemplo
2

si vamos a sumar un “Integer” con un “Long”, VBA realiza un cambio al


tipo “Integer por un Long”, antes de empezar la operación. Si uno de los tipos
fuera “Date”, el resultado también lo será.

Ejemplo sobre el uso del valor Empty:


Empty + 21 = 21
Empty + Empty = 0

Una de las limitaciones es que el resultado de la operación no debe sobrepasar


la capacidad del tipo correspondiente a la variable que va a recibir el resultado
de la misma, como sucede en el siguiente ejemplo:

Sub SumaConError()
Dim variable1, variable2 As Byte
variable1 = 10 + 20
MsgBox variable1
variable2 = 150 + 150
MsgBox variable2
End Sub

Resultado

Operador Resta (–)

Sirve para asignar el resultado de la sustracción entre dos números. Tiene dos
formas sintácticas:

variable1 = val1 – val2 – Val1

En la primera la variable variable1 recibe el valor resultante de restar el val2 a


el val1.
3

En la segunda se cambia el signo al valor numérico “val1”

Como hemos mencionado antes, si uno de los valores es de tipo Date, el


resultado también lo será:

Crear el siguiente Formato de tabla

Ejemplo:

Sub RestaFecha()
Dim variable1 As Date
variable1 = Worksheets("hoja1").Range("D3").Value -
Worksheets("hoja1").Range("F3").Value
MsgBox variable1
End Sub

Resultado

Operador Producto (*)

Sirve para asignar el resultado del producto de dos números. La forma en que
se usa es:
4

variable1 = val1 * val2

El Resultado es una variable de tipo numérico y val1 * val2 pueden ser


cualquier expresión como valor numérico.

Crear la siguiente tabla en Excel

Ejemplo sobre el uso del valor Empty:

Empty * 3,45 = 0

Ejemplo

Sub Multiplicacion()
Dim variable1 As Long
variable1 = Worksheets("hoja1").Range("D5").Value *
Worksheets("hoja1").Range("F5").Value
MsgBox variable1
End Sub

Resultado

Operador División (/)

Asigna el resultado de la división de dos números. La forma de usarlo es:


variable1 = val1 / val2

El Resultado es una variable de tipo numérico y val1 / val2 pueden ser


cualquier expresión como valor numérico. Si val2 fuera Empty, variable1 daría
Error: “división por cero”. El tipo de resultado normalmente será del
tipo Double (hay excepciones). Si uno de los operándos fuera decimal, el
resultado también lo será.
5

Ejemplo
Sub Division()
Dim variable1 As Double
variable1 = Worksheets("hoja1").Range("D6").Value /
Worksheets("hoja1").Range("F6").Value
MsgBox variable1
End Sub

Resultado

Operador Potencia (^)

Asigna el resultado de elevar la base a la potencia del exponente. La forma de


usarlo es:

variable1 = valor 1 ^ exponente


30^0 =1
5^2 = 25
3,456 ^Empty = 1

El exponente puede ser una fracción:


245^(1,2) = 736,2059

Ejemplo:

Sub Potencia()
Dim variable1 As Double
variable1 = Worksheets("hoja1").Range("D7").Value ^
Worksheets("hoja1").Range("F7").Value
MsgBox variable1
End Sub

Resultado
6

Si bien se pueden usar fracciones, para el caso especial de exponente = 0,5,


se puede usar la función Sqr (), raíz cuadrada.

Sqr (16) = 4

Operador División Entera ( \)

Este operador realiza dos procesos:

Si no tuvieran valores enteros, realiza un redondeo del numerador y del


denominador. Luego realiza la división y devuelve la parte entera de la división.
La forma de usarlo es:

variable1 = valor 1 \ valor 2

Ejemplo

Sub DivisionEntera()
Dim variable1 As Double
variable1 = Worksheets("hoja1").Range("D7").Value \
Worksheets("hoja1").Range("F7").Value
MsgBox variable1
End Sub

Resutado

Otros Ejemplos:
8\3=2
14 \ 4 = 3
5 \ 0,23 = Error
Empty \ 3 = 0

Operador Módulo o Resto (Mod)

Asigna el resto de una división entre dos números. Como en el caso anterior,
previamente realiza un redondeo a cero decimales de ambos operándos, si
estos tuvieran un valor distinto de entero. La forma de usarlo es:
variable1 = valor 1 Mod valor 2
7

Ejemplo

Sub DivisionResto()
Dim variable1 As Double
variable1 = Worksheets("hoja1").Range("D7").Value Mod
Worksheets("hoja1").Range("F7").Value
MsgBox variable1
End Sub

Resultado

Otros Ejemplos:

7 Mod 2 =1
8,9 Mod 7,2 = 1
Empty Mod 7,2 = 0

Ejemplos de Macros

No1
Sub SumaConError()
Dim Resultado As Byte
Resultado = 10 + 20
MsgBox Resultado
Resultado = 150 + 150
MsgBox Resultado
End Sub

No 2
Sub RestaFecha()
Dim Resultado As Date
Resultado = Worksheets("hoja1").Range("d3").Value -
Worksheets("hoja1").Range("f3").Value
MsgBox Resultado
End Sub

No3
Sub Multiplicacion()
Dim Resultado As Integer
Resultado = Worksheets("hoja1").Range("d4").Value *
Worksheets("hoja1").Range("f4").Value
8

MsgBox Resultado
End Sub

No 4
Sub UsoEmpty()
Dim Resultado As Double
Resultado = Empty * Worksheets("hoja1").Range("D5").Value
MsgBox Resultado
End Sub

No 5
Sub Potencia()
Dim Resultado As Double
Resultado = Worksheets("hoja1").Range("D7").Value ^
Worksheets("hoja1").Range("F7").Value
MsgBox Resultado
End Sub

No 6
Sub DivisionEntera()
Dim Resultado As Double
Resultado = Worksheets("hoja1").Range("D6").Value \
Worksheets("hoja1").Range("F6").Value
MsgBox Resultado
End Sub

No 7
Sub Mod1()
Dim Resultado As Double
Resultado = Worksheets("hoja1").Range("D10").Value Mod
Worksheets("hoja1").Range("F10").Value
MsgBox Resultado
End Sub

https://www.excel-avanzado.com/2379/operadores-matematicos-en-vba.html

Otros Conceptos
Los Operadores de comparación en VBA se usan para comparar dos
cantidades y el programa te muestra el resultado de la comparación en una
expresión de verdad; es decir, el resultado sera verdadero o falso (True or
False).

Operadores de comparación Numéricos:


Para toda expresión de comparación se utilizan los siguientes operadores de
comparación (6 operadores de comparación numéricos):
9

Expresión
Operador Significado condicional Descripción

Devuelve True si el valor a su


izquierda es numérica o
alfabéticamente mayor que el
lblVentas:Caption > que está a su derecha
> Mayor que Objetivo

Devuelve True si el valor a su


izquierda es numérica o
alfabéticamente menor que el
que está a su derecha
< Menor que Pago < 2000.00

Devuelve True si los valores


comparados son iguales
= Igual a Edad = Limite

Devuelve True si el valor a su


izquierda es numérica o
alfabéticamente igual o mayor
Mayor o que el que está a su derecha
>= igual que Nombre >= “Miguel”

Devuelve True si el valor a su


izquierda es numérica o
alfabéticamente menor o igual
Menor o Num <= que el que está a su derecha
<= igual que lblMonto.Caption

Devuelve True si el valor a su


izquierda es numérica o
alfabéticamente distinto al que
está a su derecha.
<> Distinto de TxtRes.Text <> “Si”

Ejemplos de Operadores de Comparación


12 > 45, False
45 > 32, True
78 < 145, True
204 < 200, False
78 = 78, True
46 = 64, False
89 >= 25, True
67 >= 67, True
25 >= 97, False
98 <= 69, False
12 <= 76, True
78 <> 78, False
46 <> 15, True
10

https://www.excel-avanzado.com/2470/operadores-de-comparacion-vba.html

Los operadores en VBA

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 operándos (que
11

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
operándos.

Observa el siguiente ejemplo:

Sub ConcatenarCadenas()
Dim Nombre As String, Apellido As String
Dim ANomyApe As String
Nombre = “Luisc”
Apellido = “Luna”
NomyApe = Nombre & “ “ & Apellido
MsgBox (”Buenos días, ” & NomfApe)
End Sub

Resultado

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.
12

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? Echar un vistazo a èste codigo:

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 > 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

Cual Es el resultado

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.
13

https://ayudaexcel.com/los-operadores-vba/

Operadores lógicos de Excel VBA

Los tres más utilizados. operadores logicos en Excel VBA son: Y, O Y NO.
Como siempre, usaremos ejemplos fáciles para aclarar las cosas.

Operador lógico y

Coloque un botón de comando en su hoja de trabajo y agregue las siguientes


líneas de código:

Sub OperdoreLogicoY()
Dim score1 As Integer, score2 As Integer, result As String
score1 = Range("A2").Value
MsgBox score1
score2 = Range("B2").Value
MsgBox score2
If score1 >= 60 And score2 > 1 Then
result = "pass"
MsgBox result
Else
result = "fail"
MsgBox result
End If
End Sub

Cuál es el Resultado

Range("C1").Value = result

Explicación: si score1 es mayor o igual a 60 y score2 es mayor que 1, Excel


VBA devuelve el pase, de lo contrario, Excel VBA devuelve un error.

Resultado al hacer clic en el botón de comando en la hoja:

Conclusión: Las devoluciones de Excel VBA fallan porque score2 no es mayor


que 1.
14

Operador lógico o

Coloque un botón de comando en su hoja de trabajo y agregue las siguientes


líneas de código:

Sub OpreadorLogicoO()
Dim score1 As Integer, score2 As Integer, result As String
score1 = Range("A2").Value
MsgBox score1
score2 = Range("B2").Value
MsgBox score2
If score1 >= 60 Or score2 > 1 Then
result = "pass"
MsgBox result
Else
result = "fail"
MsgBox result
End If
Range("C1").Value = result
MsgBox result
End Sub

Cuál es el resultado

Explicación: si score1 es mayor o igual a 60 o score2 es mayor que 1, Excel


VBA devuelve el pase, de lo contrario, Excel VBA devuelve un error.

Resultado al hacer clic en el botón de comando en la hoja:

Conclusión: Excel VBA devuelve el pase porque score1 es mayor o igual a 60.
Operador lógico no

Coloque un botón de comando en su hoja de trabajo y agregue las siguientes


líneas de código:

Dim score1 As Integer, score2 As Integer, result As String

score1 = Range("A1").Value
score2 = Range("B1").Value

If score1 >= 60 And Not score2 = 1 Then


result = "pass"
15

Else
result = "fail"
End If

Range("C1").Value = result

Explicación: si score1 es mayor o igual a 60 y score2 es no igual a 1, Excel


VBA devuelve el pase, de lo contrario, Excel VBA devuelve un error.

Resultado al hacer clic en el botón de comando en la hoja:

Conclusión: Las devoluciones de Excel VBA fallan porque score2 es igual a 1.

https://macerayarislari.com/es/300-examples/253-excel-vba-logical-
operators.html

Potrebbero piacerti anche