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

时间:2012-01-21 18:24:56

标签: excel vba overflow

我不太清楚溢出错误,所以我在这里很茫然。

在VBA中编写我正在调用一个VBA函数,它是一个来自dll的C ++函数的包装器(我无法访问内部函数)。 VBA / C ++函数返回一个double。它是使用数值方法的衍生估值。

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

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

编辑:我尝试的另一件事是在将CDbl分配给变量时将CDbl应用于函数返回。这是一些伪代码,只是为了澄清我的案例:

Dim db as Double, va as Variant

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

这会产生溢出,但db在locals窗口中有错误的正确值。

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

没有错误,同样的价值。 va是Variant / Double类型

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

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

1 个答案:

答案 0 :(得分:0)

我的猜测是该函数返回的值看起来像是double但不是。

变体旨在获取任何类型的值,并且赋值将执行转换。我想知道变量的赋值是否有效,因为它可以将返回的值转换为double。

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

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

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

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