VBA溢出错误,类型为double,Excel



我不太清楚溢出错误,所以我在这里非常不知所措。

在VBA中写作时,我正在调用一个VBA函数,它是dll中C++函数的包装器(我无法访问其内部)。VBA/C++函数返回一个双精度。这是一种使用数值方法的衍生估值。

昨天有一段时间(但现在可能已经消失了),我在尝试将函数return分配给声明为double的变量时遇到了溢出错误但是在错误停止时,我可以在locals窗口(8.17…)中看到分配给double的正确值。当我将函数return分配给变量时,我得到了相同的值,没有错误,变量类型为variant/double。

知道这里会发生什么吗?我完全迷路了。提前感谢您的任何想法。R

编辑:我尝试的另一件事是在将CDbl分配给变量时将其应用于函数return。这里有一些伪代码,只是为了澄清我的情况:

Dim db as Double, va as Variant
db = DerivativeValue(a, b, c...) 

这会导致溢出,但db在locals窗口中的错误值是正确的。

va = DerivativeValue(a, b, c...)

没有错误,值相同。va是变体型/双

va = CDbl(DerivativeValue(a, b, c...))

现在再次溢出。在这种情况下,我忘记了va在Locals窗口中做了什么,但很可能与情况1相同。

我的猜测是,函数返回的值看起来像双精度,但实际上不是。

变量被设计为接受任何类型的值,赋值将执行转换。我想知道对变量的赋值是否有效,因为它可以将返回的值转换为double。

如果你尝试以下操作会发生什么:

va = DerivativeValue(a,b,c...)
db = va

如果这样做有效,它将使您可以继续开发,而无需等待发现函数实际返回的内容。

额外加分。double是一个64位浮点数字。如果你有一个FPU,它可能会返回一个80位的浮点数字。

最新更新