如何在TextBox输入非整数时触发MsgBox提示?
修复VBA代码中非整数输入无提示的问题
现有VBA代码可正常输出正整数的因数,但存在缺陷:当输入非整数(例如10.5)时,代码会自动将输入向下取整为整数(如10)并输出其因数,而非弹出错误提示。现有代码如下:
Private Sub btn_OK_Click() ListBox_output.Clear Dim inputnr As Long, i As Long inputnr = Val(Me.TextBox_input.Value) If Not IsNumeric(Me.TextBox_input.Value) Or inputnr > 100000 Or inputnr <= 0 Then MsgBox "invalid input" Else For i = 2 To inputnr - 1 If inputnr Mod i = 0 Then ListBox_output.AddItem i End If Next End If End Sub
修改后的代码
Private Sub btn_OK_Click() ListBox_output.Clear Dim inputStr As String, inputDbl As Double, inputnr As Long inputStr = Me.TextBox_input.Value ' 检查输入是否为数值,是否为整数,以及范围是否合法 If Not IsNumeric(inputStr) Then MsgBox "输入无效,请输入数字" Else inputDbl = CDbl(inputStr) ' 判断是否为整数 If inputDbl <> CLng(inputDbl) Or inputDbl > 100000 Or inputDbl <= 0 Then MsgBox "输入无效,请输入0到100000之间的正整数" Else inputnr = CLng(inputDbl) For i = 2 To inputnr - 1 If inputnr Mod i = 0 Then ListBox_output.AddItem i End If Next End If End If End Sub
关键修改说明
- 先将输入内容作为字符串获取,避免
Val自动取整的干扰 - 新增非整数判断:通过比较双精度值和转换后的长整型值,判断输入是否包含小数部分
- 拆分判断逻辑,让错误提示更清晰(也可合并条件,按需调整)
- 确保只有输入合法的正整数时,才执行因数计算逻辑
内容的提问来源于stack exchange,提问作者kgrahic
相关产品推荐
相关产品推荐

