2016-03-07 33 views
2

可能是它的基本和聽起來像一個非常愚蠢的問題。但我對此感到困惑。所以,當我嘗試在雙變量中做1000 * 1000時,我得到一個溢出錯誤。如果我繼續將自變量乘以變量,那麼它工作正常。有人可以解釋一下,爲什麼?VBA中的數據類型。使用常量獲得溢出錯誤,但對變量正常工作

Sub test() 

Dim x As Double 

x = 1000 * 1000 ' ~~>> Give OverFlow Error. WHY ? 

x=1000 
x = x * x * x * x ' ~~>> Works Fine 

MsgBox x 

End Sub 
+2

VBA確實隱含了很多事情,而不詢問用戶。這使得該語言非常易於學習和使用。同時,在這種情況下,它可能會使事情變得有點複雜。數字1000未被聲明,因此VBA會自動將其視爲整數:「Debug.Print VarType(1000)」。要將數字「聲明」爲「double」,只需將'#'添加到最後:'x = 1000#* 1000' https://msdn.microsoft.com/zh-cn/library/office/gg264155%28v=office 0.15%29.aspx – Ralph

回答

3

啊。 VBA我是如何愛你的。

在這種情況下,它將1000視爲一個整數,它在VB6中是16位(最大值爲32767),因此它會溢出,因爲100萬太大而無法放入整數。

通過使用可怕的字符,您可以將文字「轉換」爲特定類型。

全部列表在這裏。是的,該功能保留在.NET中。 https://msdn.microsoft.com/en-us/library/s9cz43ek.aspx

Sub test() 

    Dim x As Double 

    x = 1000& * 1000&  ' Long literals 

    x = 1000 
    x = x * x * x * x ' ~~>> Works Fine 

    MsgBox x 

End Sub 
相關問題