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

类型为double、Excel的VBA溢出错误,excel,vba,overflow,Excel,Vba,Overflow,我不太清楚溢出错误,所以我在这里很茫然 在VBA中,我调用了一个VBA函数,它是一个从DLL(我没有访问内联)的C++函数的包装器。VBA/C++函数返回一个双精度值。这是一种使用数值方法的衍生估值 昨天有一段时间(但现在可能已经消失了),我在尝试将函数return赋值给声明为double的变量时遇到了溢出错误。但是在错误停止时,我可以在本地窗口(8.17…)中看到分配给double的正确值。当我将函数return赋值给一个变量时,我得到了相同的值,没有错误,变量的类型是variant/Doub

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

在VBA中,我调用了一个VBA函数,它是一个从DLL(我没有访问内联)的C++函数的包装器。VBA/C++函数返回一个双精度值。这是一种使用数值方法的衍生估值

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

知道这里会发生什么吗?我完全迷路了。提前谢谢你的建议。R

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

Dim db as Double, va as Variant

db = DerivativeValue(a, b, c...) 
这会导致溢出,但db在“局部变量”窗口中的错误值是正确的

va = DerivativeValue(a, b, c...)
没有错误,值相同。va为变型/双联型

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

现在再次溢出。我忘了va在本例的本地窗口中做了什么,但很可能与案例1相同

我的猜测是,函数返回的值看起来像一个double,但不是

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

如果尝试以下操作,会发生什么情况:

va = DerivativeValue(a,b,c...)
db = va
如果这样做有效,它将允许您继续开发,而无需等待发现函数实际返回的内容


加分。double是一个64位浮点数。如果您有FPU,它可能返回一个80位浮点数。

谢谢。我的错误似乎暂时已经纠正了。但我会把这些报告给你,如果再出现的话,我会向你汇报。