刷新SpinButton SpinUp或SpinDown

时间:2015-12-02 13:37:51

标签: excel excel-vba vba

我正在尝试向我的Excel电子表格添加旋转按钮,以便当我单击旋转按钮时,我的单元格值增加.01,当我单击旋转按钮时,我的单元格值减少.01。我有以下代码:

Private Sub SpinButton1_SpinUp()

Dim i As Integer

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

End Sub

当我测试此代码单元格的功能时,E8上升了.01,但只有一次。当我再次单击该按钮时,没有任何反应。如何纠正?

谢谢!

3 个答案:

答案 0 :(得分:3)

整数不会存储小数值。因此,如果在单元格E8中有8个,则在int中得到8,然后将8 + .01写入单元格E8,这样就得到8.01。

下次你将8.01读入int时,VB将小数点四舍五入,这样你再次得到8 in int并重新添加相同的值。

您需要将变量更改为十进制变量。

取出变量声明只会让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 :(得分: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

答案 2 :(得分:0)

将Integer更改为Double

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

End Sub