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:
(Para una mayor visualización de la imagen, hacer click en la misma)
En general, el tipo devuelto por la ejecución de la operación, es el del tipo del mas 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 operandos, 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 operandos.
VBA permite utilizar como operandos 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 mas preciso. Por ejemplo 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 As Byte
variable1 = 10 + 20
MsgBox variable1
variable1 = 150 + 150
MsgBox variable1
End Sub
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.
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á:
Ejemplo:
Sub RestaFecha()
variable1 = Worksheets("hoja1").Range("D3").Value - Worksheets("hoja1").Range("F3").Value
MsgBox variable1
End Sub
(Para una mayor visualización de la imagen, hacer click en la misma)
Operador Producto (*)
Sirve para asignar el resultado del producto de dos números. La forma en que se usa 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.
Ejemplo sobre el uso del valor Empty:
Empty * 3,45 = 0
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 operandos fuera decimal, el resultado también lo será.
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()
variable1 = Worksheets("hoja1").Range("D7").Value ^ Worksheets("hoja1").Range("F7").Value
MsgBox variable1
End Sub
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:
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 operandos, si estos tuvieran un valor distinto de entero. La forma de usarlo es:
variable1 = valor 1 Mod valor 2
Ejemplos:
7 Mod 2 =1
8,9 Mod 7,2 = 1
Empty Mod 7,2 = 0
Descargar ejemplo: Operadores Aritméticos en VBA
Elaborado por: Ana M. Di Nezio
08/09/2013 a las 7:34 pm
Entonces, dicho de otra forma, el "Operador División Entera ( \)" te arroja el COCIENTE y el Operador Módulo o Resto (Mod) te arroja el RESIDUO (claro, previamente redondeando el dividendo y el divisor)
(DIVIDENDO / DIVISOR = COCIENTE + RESIDUO)
07/04/2018 a las 5:39 pm
Esto es incorrecto, lo correcto sería decir que:
DIVIDENDO = DIVISOR * COCIENTE + RESIDUO
22/01/2014 a las 10:51 pm
Creo que un uso práctico de la función Operador División Entera ( \) sería aplicarlo en las planillas para el cálculo de las vacaciones o de las horas extras de los empleados.
P.e.
Minutos trabajados: 65
Hora extras a aplicarse: 65/60 = 1 hora
31/05/2014 a las 1:41 pm
Como se puedo hacer para ejecutar una macro sencilla de Resta, porque cuando uso la propiedad Select no compila.
Sub RESTA()
Range("D3").Select = Range("C3").Select - Range("B3").Select
End Sub
31/05/2014 a las 4:10 pm
Te adjunto una propuesta, no compilaba debido a que se estaba usando la propiedad incorrecta. la propiedad correcta es . Formula
Sub RESTA()
Range(“D3″).Formula = Range(“C3″).Formula – Range(“B3″).Formula
End Sub
Saludos
03/11/2016 a las 12:52 pm
Range("D3")=Val(Range("C3")) - Val(Range("B3"))
19/08/2014 a las 5:14 am
¿Existe la posibilidad de utilizar la función SUMA de Excel dentro de VBA para sumar los valores dentro de un rango o existe alguna función que permita hacer esto?
Por ejemplo:
SUMA(B2:B9)
Saludos
10/01/2019 a las 1:41 pm
si, el comando es
sum ("B2:B9")
30/04/2015 a las 5:02 pm
hola, cómo poner el simbolo de theta?
07/05/2015 a las 10:11 pm
Buena noche..
Disculpen tengo unas dudas si quiero restar una serie de fechas pero en la formula solo cambiaría el segundo rango especificando todas las celdas que tengan fechas,
He tratado de hacerlo con diferentes funciones pero no me muestra el resultado que deseo, alguien que me pueda auxiliar..
03/06/2020 a las 2:22 pm
Buenas Tardes!, estoy realizando un formulario para nomina, y quiero hacer una formula en macro, que me seleccione el concepto (Salario, Comisiones, Días Libres, Domingo y feriados, Horas extras D y N, y las deducciones (ivss, LPH, PF, impuesto) dependiendo de la ocasión.
09/07/2020 a las 10:07 am
Si quiero que el resultado de una suma quede plasmado en una celda, pero sólo el resultado, no la fórmula de la operación, como debe de ser escrito?.