Foro VBATotal

Aprender a programar en Visual Basic

Por favor, o Regístrate para crear mensajes y debates.

error '5' en tiempo de ejecución: Argumento o llamada a procedimiento no válida

Buenas noches compañeros. Tengo el error que aparece en el siguiente código y  el error es "error '5' en tiempo de ejecución: Argumento o llamada a procedimiento no válida".

Aparece cuando se va a ejecutar la línea: Vilma = ((-qRK / 2) - (Deter_1 ^ 0.5)) ^ (1 / 3)
Lo extraño es que sí ejecuta Vilma1 = -1.98055870547775E-04 ^ (1 / 3)  que se supone es lo mismo.

Es decir: ¿ Por que si se escribe el valor numérico como tal como en Vilma1 = -1.98055870547775E-04 ^ (1 / 3) el código realiza el cálculo y arroja el valor de: -0.0582902484749501.
Pero si es de la forma Vilma = ((-qRK / 2) - (Deter_1 ^ 0.5)) ^ (1 / 3), aparece el error mencionado?

Agradezco enormemente quien pueda encontrar la solución, a continuación comparto el código. Es algo sencillo, aunque es parte de un código más grande, extraje esta parte que es donde se presenta el error.

 

Sub verif()

Dim qRK As Double
Dim Deter_1 As Double
Dim Vilma As Double
Dim Vilma1 As Double
Dim var1 As Double
Dim var2 As Double
Dim var3 As Double

qRK = -1.0435036917859
Deter_1 = 0.272431699950925

Hoja1.Cells(1, 1) = "qRK"
Hoja1.Cells(2, 1) = "Deter_1"

Hoja1.Cells(1, 2) = qRK
Hoja1.Cells(2, 2) = Deter_1

var1 = -qRK / 2
var2 = (Deter_1 ^ 0.5)
var3 = var1 - var2

Hoja1.Cells(3, 1) = "var1"
Hoja1.Cells(4, 1) = "var2"
Hoja1.Cells(5, 1) = "var3"

Hoja1.Cells(3, 2) = var1
Hoja1.Cells(4, 2) = var2
Hoja1.Cells(5, 2) = var3

Vilma1 = -1.98055870547775E-04 ^ (1 / 3)

Hoja1.Cells(6, 1) = "Vilma1"
Hoja1.Cells(6, 2) = Vilma1

Vilma = ((-qRK / 2) - (Deter_1 ^ 0.5)) ^ (1 / 3)

Hoja1.Cells(7, 1) = "Vilma"
Hoja1.Cells(7, 2) = Vilma

End Sub

Hola Leo,

El error se da porque el operador ^ sólo acepta exponentes enteros cuando recibe un número negativo. Es un problema de exponenciación en VBA, que no permite sacar raíces de números negativos.

Puedes realizar la primera parte de la operación que guardas en la variable var3. Y después usar una nueva variable con el resultado final:

Vilma2 = WorksheetFunction.Power(var3, (1 / 3))

Saludos.

leoPetrof-user ha reaccionado a esta publicacion.
leoPetrof-user
Por favor, si te he ayudado, haz clic en algún banner publicitario. Es una gran manera de ayudarme. También puedes realizar una donación en Paypal por la cantidad que desees https://paypal.me/vbatotal

Hola @fito, quería agradecerte enormemente. Tu solución ha funcionado totalmente.

Me alegro que te funcionase.

Saludos.

Por favor, si te he ayudado, haz clic en algún banner publicitario. Es una gran manera de ayudarme. También puedes realizar una donación en Paypal por la cantidad que desees https://paypal.me/vbatotal

Contacto