代码之家  ›  专栏  ›  技术社区  ›  Lutscha

当变量类型输入错误时,重新运行InputBox

  •  1
  • Lutscha  · 技术社区  · 7 年前

    Test1:
    qm = InputBox("Wie viele Quadrat Meter hat die Wohnung?" & vbLf & "Bitte geben sie die QM Zahl an.", Angabe)
    If IsError(qm) Then GoTo Test1
    

    qm 定义为 Integer ,=0,下面有一个 Select Case 改变的多重选择 到1-600之间的数字。

    5 回复  |  直到 5 年前
        1
  •  2
  •   Shai Rado    7 年前

    Application.InputBox Type Type:=1 然后只允许数值。

    密码 :

    Dim qm As Integer
    
    qm = Application.InputBox("Wie viele Quadrat Meter hat die Wohnung?" _
                & vbLf & "Bitte geben sie die QM Zahl an.", "Angabe", Type:=1)
    
        2
  •  2
  •   Mrig    7 年前

    试试下面的方法

    Sub Demo()
        Dim qm As String
        qm = 0
    Test1:
        qm = InputBox("Enter value")
        If Not IsNumeric(qm) Then GoTo Test1
    End Sub
    

    声明 qm String 并检查其是否为数字。那你就必须转换 Integer 使用 CInt() .

        3
  •  1
  •   Prisoner    7 年前

    您可以替换 If IsError(qm) Then GoTo Test1 On Error GoTo Test1 On Error GoTo 0 重置错误处理程序。

    详情请参见 https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/statements/on-error-statement

        4
  •  1
  •   FunThomas    7 年前

    有多种方法可以解决这个问题。我建议将变量定义为 variant

    dim answer as variant, qm as integer
    do while true
        answer = InputBox(...)
        if isNumeric(answer) then
            qm = cInt(answer)
            exit do
        endif
    loop
    
        5
  •  1
  •   Trimax user5433596    7 年前

    您可以设置一个事件,以在每次更改文本框时验证其内容。我检查了这是一个数字,但你可以验证你需要的任何其他条件。

    Private Sub TextBox1_Change()
      validator = IsNumeric(TextBox1.Value)
      If validator = False Then
        MsgBox "WARNING! You must enter a number!"
        TextBox1.BackColor = &HFF8&
      End If
    End Sub