Foro VBATotal
Aprender a programar en Visual Basic
error '5' en tiempo de ejecución: Argumento o llamada a procedimiento no válida
Cita de leoPetrof-user en 26 de octubre de 2023, 04:08Buenas 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 DoubleqRK = -1.0435036917859
Deter_1 = 0.272431699950925Hoja1.Cells(1, 1) = "qRK"
Hoja1.Cells(2, 1) = "Deter_1"Hoja1.Cells(1, 2) = qRK
Hoja1.Cells(2, 2) = Deter_1var1 = -qRK / 2
var2 = (Deter_1 ^ 0.5)
var3 = var1 - var2Hoja1.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) = var3Vilma1 = -1.98055870547775E-04 ^ (1 / 3)
Hoja1.Cells(6, 1) = "Vilma1"
Hoja1.Cells(6, 2) = Vilma1Vilma = ((-qRK / 2) - (Deter_1 ^ 0.5)) ^ (1 / 3)
Hoja1.Cells(7, 1) = "Vilma"
Hoja1.Cells(7, 2) = VilmaEnd Sub
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
Cita de Administrador en 26 de octubre de 2023, 09:39Hola 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.
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.
Cita de leoPetrof-user en 27 de octubre de 2023, 01:55Hola @fito, quería agradecerte enormemente. Tu solución ha funcionado totalmente.
Hola @fito, quería agradecerte enormemente. Tu solución ha funcionado totalmente.
Cita de Administrador en 30 de octubre de 2023, 08:47Me alegro que te funcionase.
Saludos.
Me alegro que te funcionase.
Saludos.