簡體   English   中英

具有Windows 10 LTSC的Excel VBA中Double變量中的大值問題

[英]Issue with large value in Double variable in Excel VBA with Windows 10 LTSC

聲明為Double的變量導致Excel VBA終止Windows 10 LTSC中的功能。 這段代碼不起作用: Dim Min As Double Min = 1E+300 If (Min > MyVarA(2, I)) Then Min = MyVarA(2, I)沒有錯誤消息,該函數可以立即終止而沒有任何故障。

此代碼可在Windows 10 LTSB和Win8.1或Win7等其他舊Windows版本中使用!

解決此問題的解決方案:將1E + 300減少到1E + 30! 這段代碼效果很好: Dim Min As Double Min = 1E+30 If (Min > MyVarA(2, I)) Then Min = MyVarA(2, I)

(沒有足夠多的觀點可以發表評論,因此請張貼為答案)

在確定變量類型時,VB / VBA的功能有些復雜。 如果發現這樣做“優化”了代碼/執行,則傾向於進行數據類型轉換( 例如Double-> Single )。

因此,它可能有助於強制VBA使用正確的數據類型。 這可以通過專用的轉換方法(例如CDbl(),CLng()等)或將類型聲明字符( 例如,“#”表示Double,“&”表示Long )添加到相關變量/值中來實現。 在您的情況下,可能看起來像:

' Using type-declaration character '#' for Double
Min = 1E+300#
' Using data type conversion method CDbl()
If (Min > CDbl(MyVarA(2, I))) Then Min = CDbl(MyVarA(2, I))

上述所有c均假設所討論的實際數據未超出Double范圍。

暫無
暫無

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

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