2016-03-07 40 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個字母並按下回車鍵時,它表示不會將單個字符轉換爲雙精度字符,但我沒有聲明爲單個字符或雙精度字符。 –

相關問題