2015-12-02 8 views
0

我想向我的Excel電子表格中添加一個旋轉按鈕,這樣當我單擊旋轉按鈕時,我的單元格值增加了.01,當我單擊旋轉按鈕時,我的單元格值減少了。 01。我有以下代碼:刷新SpinButton SpinUp或SpinDown

Private Sub SpinButton1_SpinUp() 

Dim i As Integer 

i = Sheet1.Range("E8").Value 
Sheet1.Range("E8") = i + 0.01 

End Sub 

當我測試此代碼細胞E8上升0.01的功能,但只有一次。當我再次點擊按鈕時,沒有任何反應。這怎麼可以糾正?

謝謝!

回答

0

變化整數到雙

Private Sub SpinButton1_SpinUp() 
Dim i As Double 
i = Sheet1.Range("E8").Value 
Sheet1.Range("E8") = i + 0.01 

End Sub 
+0

謝謝。這工作。 – Chris2015

+1

我不同意 - 如果您刪除了「Dim i As Integer」並且它仍在工作,那麼您在模塊的頂部沒有「Option Explicit」選項,可以打開一大堆蠕蟲。因爲Integer只能接受整數,所以'Integer'更改爲Double。'Double'可以使用小數部分。或者,使用「旋轉」按鈕的內置功能來更改單元格值,並在另一個單元格中將該數字除以100以獲得您之後的值。 –

+0

@Darren Bartrup-Cook是正確的。你不應該讓VB猜測你的變量應該是什麼。你在問問題。 – MatthewD

3

的整數不會存儲十進制值。所以,如果你在單元格E8中有8個,那麼你在int中得到8,然後將8 + .01寫入單元格E8,所以你得到8.01。

你讀到8.01到INT接下來的時間,VB是四捨五入的小數,所以你是在INT再次獲得8和添加相同的值回。

您需要更改該變量爲十進制變量。

取出變量的聲明只會讓VB猜用什麼,這是不是一個好的做法。您應該在代碼的頂部使用「Option Explicit」來防止這種情況發生。

Option Explicit 

Private Sub SpinButton1_SpinUp() 

    Dim i As Double 

    i = Sheet1.Range("E8").Value 
    Sheet1.Range("E8") = i + 0.01 

End Sub 

你也可以使用

Dim i As Single 

取決於小數,它可以得到的大小。

+1

這應該是被接受的答案。 – ManishChristian

+1

@ManishChristian希望OP會檢查並試圖顯式選項。如你所知,有很多方法可以使事情發揮作用,但並不意味着它們是正確的。 – MatthewD

+1

我同意,這就是接受的答案已被編輯的原因;) – ManishChristian

2

你並不需要的值存儲在一個變量。嘗試這個。

Private Sub SpinButton1_SpinUp() 

    Sheet1.Range("E8").Value = Sheet1.Range("E8").Value + 0.01 

End Sub 

Private Sub SpinButton2_SpinDown() 

    Sheet1.Range("E8").Value = Sheet1.Range("E8").Value - 0.01 

End Sub 
+0

對不起,因爲沒有處理'整數'問題而投了票。實際上,重新閱讀它 - 至少可以刪除聲明位 - 如果可以的話,會再次投票。 :)大聲笑,可以投1或降到-1,但不能改回0. –

+0

謝謝Darren;) – Linga