在VBA中的数字上下控件

10

VBA中是否有内置的数字增减控件,或者我们需要创建类似的控件?

如果有这样的控件,那么我们可以使用哪些事件?

请提供建议。

1个回答

23
你可以使用 SpinButton1 控件来实现这个功能。 快照

enter image description here

代码

你可以在设计时或运行时设置 SpinButton1 控件的最小值和最大值,如下所示。

Private Sub UserForm_Initialize()
    SpinButton1.Min = 0
    SpinButton1.Max = 100
End Sub

Private Sub SpinButton1_Change()
    TextBox1.Text = SpinButton1.Value
End Sub

后续

如果您想根据用户在文本框中输入的内容来增加或减少文本框的值,则使用此方法。这也使得文本框成为一个“仅数字”文本框,从而满足您的其他要求 ;)

Private Sub SpinButton1_SpinDown()
    TextBox1.Text = Val(TextBox1.Text) - 1
End Sub

Private Sub SpinButton1_SpinUp()
    TextBox1.Text = Val(TextBox1.Text) + 1
End Sub

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
      Case vbKey0 To vbKey9, 8
      Case Else
        KeyAscii = 0
        Beep
    End Select
End Sub

让我很开心......事实上,我将两个旋转按钮与文本框链接起来,以实现更多的功能.....有没有办法在与旋转控件按钮链接的文本框中只允许输入数字....???? - Premanshu
将文本框的.Locked属性设置为TRUE,这样用户就无法手动输入。剩下的旋转按钮会处理它 :) - Siddharth Rout
感谢Sid的所有帮助...那个.locked的东西运行良好。我允许我的用户手动输入数据...虽然我已经成功限制了除整数以外的任何输入...但是当我手动输入整数,然后尝试增加/减少时,它并不正常工作。比如说,值为14,现在我手动将其更改为5,然后点击增加,它变成15而不是6。有什么想法如何解决这个问题吗? - Premanshu
1
是的,那是因为它正在获取微调框的值。更新帖子以包含您的新请求... 2分钟。 - Siddharth Rout
谢谢!您能否建议一种更好的学习Excel的方法?我正在尝试自学,并将Stack Overflow作为其中一个帮助平台。 - Premanshu
1
从初学者的角度来看,我建议使用这些免费的方法。MSDN + 像SO这样的论坛 + Google :) 当你有时间时,尝试访问旧问题并查看人们如何解决各种问题。它们真的是学习的好方法 :) 如果你想购买一本书,你可能想尝试John Walkenbach的一本书。http://spreadsheetpage.com/index.php/books/ - Siddharth Rout

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接