2012-01-21 65 views
0

我不知道溢出錯誤非常好,所以我很茫然在這裏。VBA溢出錯誤與類型雙重,Excel

用VBA編寫我調用了一個VBA函數,它是一個dll(我沒有訪問內部)的C++函數的包裝。 VBA/C++函數返回一個double。這是一種使用數值方法的衍生評估。

昨天有一段時間(但現在可能已經消失),我試圖將函數返回賦值爲聲明爲double的變量時出現溢出錯誤。 但是關於錯誤停止,我可以在本地窗口(8.17 ...)中看到分配給double的正確值。當我將函數返回賦值給一個變體時,我得到的值相同,沒有錯誤,變體是類型Variant/Double。

有什麼想法可以在這裏發生什麼?我完全失去了。提前感謝任何想法。 R

編輯:我試過的另一件事是將CDbl應用於函數返回時,將其分配給變體。下面是一些僞代碼,只是爲了澄清我的情況:

Dim db as Double, va as Variant 

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

這給溢出,但DB在當地人窗口的正確值,上的錯誤。

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

沒有錯誤,相同的值。 va是類型Variant/Double

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

現在再次溢出。我忘了VA在這種情況下,本地窗口一樣,但有可能是一樣的情況下,1

回答

0

我的猜測是,該函數返回,看起來像一個雙,但不是一個值。

變體旨在採取任何類型的值,並且分配將執行轉換。我想知道賦值到一個變體是否可行,因爲它可以將返回的值轉換爲double。

如果您嘗試以下會發生什麼:

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

如果一切正常,它會讓你繼續開發,而無需等待發現什麼功能真的返回。

加點。 double是一個64位浮點數。如果你有一個FPU,它可能會返回一個80位浮點數。

+0

謝謝。我的錯誤似乎已經固定了。但是,如果它再次出現,我會這些並報告。 – RomnieEE2