这是我第一次尝试在excel中使用vba,以及我在很长一段时间内的第一次编程。我试图创建一个组合框,拒绝除整数1-9之外的任何输入。可以从下拉列表中选择值,但是如果您输入文本或范围之外的内容,请单击“选择”,我希望它清除并重新提示用户窗体。它适用于范围之外的文本和数字,但如果它是范围内的小数值则不行。
我的基本想法是,如果输入是文本或小数,当我试图将其设置为我声明的整数变量时会出现错误,但如果它是小数,它似乎将数字舍入为整数。这是整数变量的标准吗?可能有一种更简单的方法来做同样的事情,但我也对它的工作方式感兴趣。
这是逻辑部分:
Public offdays As Integer 'declared at start
Private Sub CommandButton1_Click() 'click the select commandbutton on the userform
On Error GoTo errorhandler:
offdays = ComboBox1.Value 'set offdays = to combobox value
range ("K3") = offdays 'print the value to a cell
If offdays >= 0 And offdays <= 10 Then
Unload Me
Exit Sub
End If
errorhandler:
Unload Me
store_offdays.Show
End Sub
答案 0 :(得分:0)
如评论所述,要捕获小数位,请将变量声明为Single
或Double
整数只保留整数
但是,如果您的变量可能接受其他数据类型,则只需将其声明为Variant
至于完成你想要的东西,你可以尝试下面:
Dim offdays As Variant
offdays = ComboBox1.Value
If Not offdays Like "[1-9]" Then Unload Me: Exit Sub
以上严格接受数字1-9
(单个数字)仅作为输入
没有文字,没有小数,没有零
希望这会有所帮助。