簡體   English   中英

VBA溢出錯誤,類型為double,Excel

[英]VBA Overflow error with type double, Excel

我不太清楚溢出錯誤,因此我很茫然。

在VBA中編寫代碼時,我正在調用VBA函數,該函數是dll(我無法訪問其內部函數)中C ++函數的包裝。 VBA / C ++函數返回一個雙精度型。 它是使用數值方法的衍生評估。

昨天有一段時間(但現在可能已經消失了),當我嘗試將函數返回給聲明為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在“本地”窗口中做了什么,但可能與情況1相同。

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

變體被設計為采用任何類型的值,並且賦值將執行轉換。 我想知道分配給變體是否可行,因為它可以將返回的值轉換為雙精度值。

如果嘗試以下操作會發生什么:

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

如果這行得通,它將使您可以繼續開發而不必等待發現該函數實際返回的內容。

加分。 雙精度數是64位浮點數。 如果您有FPU,則它可能會返回80位浮點數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM