Excel vba错误5无效的过程调用或带有电源操作数的参数

请考虑这个子:

Sub TestPower() Dim dbl As Double dbl = -0.682434999562851 Debug.Print (-0.682434999562851 ^ 0.2) Debug.Print (dbl ^ 0.2) End Sub 

在第二个“debug.print”命令,我得到一个错误5:无效的过程调用或参数。

Excel Office 2016。

有任何想法吗?

这是你的问题的解决scheme:

 Sub TestPower() Dim dbl As Double dbl = 0.682434999562851 Debug.Print (-0.682434999562851 ^ 0.2) Debug.Print -(dbl ^ 0.2) End Sub 

请注意,我将负号放在括号外(并相应地更改了dbl)。

从MSDN库中,“只有指数是整数值,数字才能为负数”。 我不是一个math家,但它与结果是一个复数有关。

你所看到的与VBA中的运算符优先级有关。

在VBA中,求幂的优先级比否定要高。 所以在你的第一个方程中,指数运算首先发生,然后结果被否定。

实际上,Power函数似乎比指数运算符更聪明。 事实上,你正试图取一个负数的第五个根,这将是一个实数。 电源function可以识别。 指数运算符不。

编辑:^的 VBA帮助:备注只有exponent是一个整数值, number可以是负数。

所以,行为差异的解释似乎确实是运算符优先级,并且是VBA ^运算符的限制。

看来,当你使用文字时,VBA将expression式(-0.6824 ^ 0.2)解释为( – (0.6824 ^ 0.2)),但是当你使用这个variables时,它意识到你正在试图计算一个负数号码,放弃。