将和integer设置为十进制,没有错误.拒绝非整数值的组合框



这是我第一次尝试在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

如前所述,若要捕获小数点,请将变量声明为SingleDouble
整数只包含整数
但是,如果您的变量可以接受其他数据类型,那么只需将其声明为Variant即可
至于完成你想要的,你可以试试下面的:

Dim offdays As Variant
offdays = ComboBox1.Value
If Not offdays Like "[1-9]" Then Unload Me: Exit Sub

以上严格接受数字1-9(个位数)作为输入
没有文本,没有小数,没有零
希望这能有所帮助。

最新更新