VBA中需要错误对象

VBA中需要错误对象,vba,excel,Vba,Excel,有人能告诉我在VBA中运行此代码时出现错误“object required”的原因吗?抱歉,这是我第一次编写VBA代码 Public Sub FinalScore() Dim E1, E2, E3, E4, GP, FE As Long Dim strOutput, G As String Dim S As Double Dim Fail, Pass, Merit, Distinction As String E1 = InputBox("What is your result

有人能告诉我在VBA中运行此代码时出现错误“object required”的原因吗?抱歉,这是我第一次编写VBA代码

    Public Sub FinalScore()
Dim E1, E2, E3, E4, GP, FE As Long
Dim strOutput, G As String
Dim S As Double
Dim Fail, Pass, Merit, Distinction As String

   E1 = InputBox("What is your result of 1st excecise?", "question1")
If Not IsNumeric(E1.Value) Then
    MsgBox "Sorry bro I need a number not a String"
    E1.SetFocus
Else
    If E1 < 0 And E1 > 10 Then
    MsgBox ("Input number must be in between 0 and 10")
    E1.SetFocus
    End If
End If

End Sub
公共子财务核心()
尺寸E1、E2、E3、E4、GP、FE,与长度相同
暗输出,G为字符串
把S调成双色
将失败、通过、优点、区别视为字符串
E1=输入框(“你第一次练习的结果是什么?”,“问题1”)
如果不是数字(E1.值),则
MsgBox“对不起,兄弟,我需要一个数字而不是字符串”
E1.SetFocus
其他的
如果E1<0且E1>10,则
MsgBox(“输入编号必须介于0和10之间”)
E1.SetFocus
如果结束
如果结束
端接头

E1
是类型
Variant
,当前保存
InputBox
函数的结果,该函数通常返回字符串。由于它不是对象,它将在
E1.Value
E1.SetFocus
上引发错误,因为它没有任何此类方法或属性

.SetFocus
方法属于
表单控件
对象,不会将用户返回到输入框

您可以使用
GoTo
语句来控制流,并强制用户输入正确的类型/值:

ReTry:
   E1 = InputBox("What is your result of 1st excecise?", "question1")
If Not IsNumeric(E1) Then
    MsgBox "Sorry bro I need a number not a String"
    GoTo ReTry
Else
    If E1 < 0 And E1 > 10 Then
    MsgBox ("Input number must be in between 0 and 10")
    GoTo ReTry
    End If
End If
建议键入每个变量,这是一种良好的做法:

Dim x as String
Dim y as String
Etc...

另外,为什么我在编译代码时在E1.Value处出现错误“Invalid qualifier”?对不起,你是对的@DavidZemens,已经有一段时间了。@trungbun请重新阅读我的答案
E1
不是一个对象,所以不能执行
E1.Value
@trungbun,因为E1是一个变量。它没有名为Value的属性!!您使用E1就像是一个控件、模块或类,其属性为value。@Jeremythonpson注意到w/r/t
GoTo
语句。小心使用:-)但在这种情况下,对于以前从未使用过VBA的人(正如OP所承认的那样),我不会试图解释如何在自定义函数中包装
InputBox
调用!
Dim x as String
Dim y as String
Etc...