【问题标题】:Why do I get an error when I put a letter into a string?为什么将字母放入字符串时会出错?
【发布时间】:2016-06-21 18:12:21
【问题描述】:

我正在制作一个小程序,用于检查您输入的最多 4 个数字,每个数字表示不同的内容。但我希望它说“选择一个数字”。当有人代替写信时。基本上我的 else 应该是只有当答案包含一个字母时,但是当我运行程序并输入一个字母然后按 Enter 时,我收到一个错误,关于无法将答案转换为双精度,我已经到处寻找解决这个问题,但没有什么能接近。请帮忙,我将不胜感激。我输入了 a,按下回车键,这是我得到的错误(尽管它是所有字母。不仅仅是 a。)错误是:{“从字符串““a””到类型“双”的转换无效。” } If 语句开始时发生错误。

    If (e.KeyCode = Keys.Enter) Then

        Dim Answer As String

        Answer = txtAnswer.Text

        If Answer = 1 Then
            txtResponse.Text = "Good"
        ElseIf Answer = 2 Then
            txtResponse.Text = "Good again"
        ElseIf Answer = 3 Then
            txtResponse.Text = "Not too good"
        ElseIf Answer = 4 Then
            txtResponse.Text = "Terrible"
        ElseIf Answer > 4 Or Answer < 1 Then
            txtResponse.Text = "Wrong Answer"
        Else
            txtResponse.Text = "pick a number"
        End If
    End If

【问题讨论】:

  • 1 是数字,“1”是字符串。所以要么你改变Dim Answer As IntegerAnswer = CInt(txtAnswer.Text),要么把所有的IF块改成“1”、“2”等。但是你不能用“>”、“

标签: string vba error-handling double type-conversion


【解决方案1】:

此代码应该可以满足您的需求。

Sub PickANumber()
Dim Valid As Boolean
Dim Data, Answer As String

While Valid = False
    Data = InputBox("Enter number between 1 and 4")
    If IsNumeric(Data) And Data >= 1 And Data <= 4 Then
            Valid = True
        Else
            Valid = False
            Data = MsgBox("Please input a valid number.", vbRetryCancel)
            If Data = vbCancel Then Exit Sub
    End If
Wend

    Select Case Data
    Case 1
        Answer = "Good"
    Case 2
        Answer = "Good again"
    Case 3
        Answer = "Not too good"
    Case 4
        Answer = "Terrible"
    End Select
    MsgBox Answer

End Sub

【讨论】:

  • 这行代码中的一切都正常,除了再次输入一个字母。我仍然收到错误消息:{"从字符串 ""a"" 到类型 'Double' 的转换无效。"} 错误出现在代码行: If IsNumeric(Data) And Data >= 1 And Data
  • 请发布您的整个代码?多次输入字母时,我没有收到该错误。
  • 就是整个代码,除了文本框上的class、end class和key down事件。当我插入 1 个字母并按 Enter 键时,它说它不会将单数转换为双数,但我没有任何声明为单数或双数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-21
  • 1970-01-01
  • 1970-01-01
  • 2022-07-21
  • 1970-01-01
  • 2017-07-12
相关资源
最近更新 更多