我可以在 Excel VBA 變數中儲存的最大值(數字)是多少?

我可以在 Excel VBA 變數中儲存的最大值(數字)是多少?

我正在使用 Microsoft Office Excel 2007。

假設我的號碼是 12500000000000。

Dim value1 as long

value1 = CLng(copyrng2.value)

'where copyrng2 is a range (cell) variable containing 12500000000000

上面的程式碼會因為溢出而失敗。

我可以將該數字儲存在任何 Excel (VBA) 變數中嗎?如果沒有,我可以做什麼來儲存它,最好以可以執行計算的格式(整數、長整型等)儲存?

答案1

現有的答案是正確的,因為您需要使用雙倍的資料類型。這解決了問題,現在我將介紹一些技術細節。

Double 資料類型可以儲存的最大數字(也是 Excel 可以處理的最大數字)是 1.79769313486231570 • 10 308。但是,您可以在儲存格中放入的最大數字(不含公式)是 9.99999999999999 • 10 307。請注意,當您處理如此大的數字時,您將失去很大的精度 - 向如此大的數字添加一個相對較小的數字很可能什麼也不做。浮點可能會變得有點奇怪。

與 Double 的範圍相比,Long 資料類型的最大大小只是滄海一粟;有符號 64 位元整數最多只能達到 9,223,372,036,854,775,807。只要您只處理整數,至少可以保證四捨五入不會造成任何損失。

資料來源:Excel 規格與限制,資料類型總結

答案2

Excel 只能儲存 15 位數。最大的數字為 999999999999999。如果您嘗試輸入 16 位數字,它會從第 16 位開始將最後一個數字四捨五入為 0。

答案3

你需要使用雙倍的而不是長的。和B2喜歡:

在此輸入影像描述

這段程式碼會拋出一個錯誤:

Sub dural()
    Dim d As Long
    d = Range("B2").Value
End Sub

但這段程式碼不會:

Sub BigNumber()
    Dim d As Double
    d = Range("B2").Value
    MsgBox d
End Sub

在此輸入影像描述

答案4

使用Decimal變數類型。您不能將數字聲明為,Decimal但可以將其儲存在Variant變數中。

Dim value1 as Variant
value1 = CDec(copyrng2.value)

筆記: 對於您正在處理的大數字 (12500000000000),如果您嘗試儲存小數,Excel 似乎會將該數字四捨五入到小數點後一位。

相關內容