2016-03-07 39 views
0

我正在制作一个小程序,用于检查您输入的最多4个数字,每个数字表示不同的数字。但我想让它说“选择一个数字”。当有人用字母代替时。基本上我的其他东西应该是只有当答案中包含一个字母,但是当我运行该程序,并键入一个字母,然后按回车,我得到一个关于不能将答案转换为双精度的错误,而且我已经到处寻找解决这个问题,但没有接近。请帮助,我非常感谢它。我输入了一个按下的输入,这是我得到的错误(尽管它与所有字母不同)。错误是:{“从字符串转换”“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 
+0

1是一个数字,“1”是字符串。因此,无论您是将“Dim Answer As Integer”还是“Answer = CInt(txtAnswer.Text)”,或将所有IF块更改为“1”,“2”等,但不能使用“>”,“<”为字符串。 – PatricK

回答

0

此代码应该做你正在寻找的东西。

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 
+0

代码行中的所有内容都可以工作,除了再次输入字母。我仍然收到错误消息:{“从字符串转换”“a”到类型'Double'无效“}错误出现在代码行:如果IsNumeric(Data)和Data> = 1且Data < = 4 Then –

+0

请发表您的完整的代码?多次输入字母时不会出现此错误。 –

+0

这是整个代码,除了文本框上的类,结束类和关键事件。当我插入1个字母并按下回车键时,它表示不会将单个字符转换为双精度字符,但我没有声明为单个字符或双精度字符。 –

相关问题