运行时错误“13”:types不匹配

我正在尝试创build一个Excel工作表,当我select一个下拉列表选项时,出现一个input框并要求用户input一个数字。 这是为我玩的游戏创build一个“技能规划师”。 所以我正在使用的代码

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Select Case Range("A4") Case "Endurance" Call Module1.GetEndurance Case "Active Regeneration" Call Module2.GetActiveRegen End Select End Sub 

在ThisWorkbook和Module1里面

 Sub GetEndurance() Dim QtyEntry As Integer Dim MSG As String Const MinSkill As Integer = 0 Const MaxSkill As Integer = 100 MSG = "Please enter skill level between " & MinSkill & " and " & MaxSkill Do QtyEntry = InputBox(MSG) If IsNumeric(QtyEntry) Then If QtyEntry >= MinSkill And QtyEntry <= MaxSkill Then Exit Do End If MSG = "... Really? I told you the valid options..." MSG = MSG & vbNewLine MSG = MSG & "Please enter skill level between " & MinSkill & " and " & MaxSkill Loop Sheet2.Range("B2").Value = QtyEntry End Sub 

除了被称为GetActiveRegen() Module2具有完全相同的代码,它转到Sheet2.Range("B3").Value = QtyEntry

当我selectinput框出现的两个下拉选项中的一个,并且我可以input一个数字时,它将这个数字放在想要的位置,但是我的问题是一直要求我input一个数字,如果我点击取消我得到错误13消息,如果我没有回答,然后点击确定,那么它给了我错误13消息。 这是我第一次在Excel VBA编程,我没有真正的编程经验,所以这是非常令人沮丧的。 任何帮助将不胜感激。

错误显示在这一行上:

  QtyEntry = InputBox(MSG) 

您在声明中为QtyEntryselect了错误的数据types。 selectstring而不是整数。

 Sub GetEndurance() Dim QtyEntry As String Dim MSG As String Const MinSkill As Integer = 0 Const MaxSkill As Integer = 100 MSG = "Please enter skill level between " & MinSkill & " and " & MaxSkill Do QtyEntry = InputBox(MSG) If QtyEntry = "" Then Exit Do If IsNumeric(QtyEntry) Then If QtyEntry >= MinSkill And QtyEntry <= MaxSkill Then Exit Do End If MSG = "... Really? I told you the valid options..." MSG = MSG & vbNewLine MSG = MSG & "Please enter skill level between " & MinSkill & " and " & MaxSkill Loop Sheet2.Range("B2").Value = QtyEntry End Sub