You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 14:12:34