Vba 编程出错,老是说我缺少End Sub。。。求助大神!!

第一个:
Private Sub ToggleButton2_Click()
Sub 阶乘函数()
Dim X As Integer
X = Val(InputBox("请输入N:", "求阶乘"))
MsgBox X & "的阶乘数为:" & Fact(X), vbOKOnly, "求阶乘"
End Sub
第二个:
Private Sub ToggleButton3_Click()
Dim i, score As Integer
score = Val(InputBox("输入学生百分制成绩:", "学生成绩转换"))
'Val 函数将数据转换为数值型
If score >= 85 And score <= 100 Then
MsgBox (score & "分的等级是A"), vbOKOnly, "学生成绩转换"
If score >= 75 And score <= 84 Then
MsgBox (score & "分的等级是B"), vbOKOnly, "学生成绩转换"
If score >= 65 And score <= 74 Then
MsgBox (score & "分的等级是C"), vbOKOnly, "学生成绩转换"
If score >= 60 And score <= 64 Then
MsgBox (score & "分的等级是D"), vbOKOnly, "学生成绩转换"
If score >= 0 And score <= 59 Then
MsgBox (score & "分的等级是F"), vbOKOnly, "学生成绩转换"
Else
MsgBox "输入错误,请输入0~100之间的数", vbOKOnly, "学生成绩转换"
End If
End Sub
第三个:
Private Sub ToggleButton5_Click()
Sub 计算圆面积()
Rem 本程序段用于计算圆的面积
Dim r As Single, s As Single
r = Val(InputBox("请输入圆的半径", "计算圆面积", "0")) '输入半径
s = 3.1416 * r ^ 2 '计算圆面积
Rem 在消息框中输出圆的半径和面积
MsgBox "圆的半径:" & r & vbLf & "圆的面积:" & s, vbOKOnly, "计算圆面积"
End Sub
第四个:
Private Sub ToggleButton6_Click()
Sub at()
Dim y, s
y = Year(Now())
s = (y Mod 4 = 0 And y Mod 100 <> 0) Or y Mod 400 = 0 <> 0
MsgBox IIf(s, "闰年", "平年")
End Sub

第一个
删除这条 Sub 阶乘函数()
上面已经有sub,不能再里面再出现另外一个过程

第二个
If score >= 85 And score <= 100 Then MsgBox (score & "分的等级是A"), vbOKOnly, "学生成绩转换"
前面四条,像这样改成同一行或者,或者 添加End if语句

第三个:
Private Sub ToggleButton5_Click()
Sub 计算圆面积() '把这句删掉
还是跟第一个一样,不要重复SUB语句
Private Sub ToggleButton5_Click()这句已经声明了一个事件的过程,不要再去声明Sub 计算圆面积()这样一个过程

第四个:
Private Sub ToggleButton6_Click()
Sub at()
也是一样,sub过程中不要再声明另外一个sub追问

第一条删去后说函数未定义
第二条还是不行
第三,四条可行了。能否再讲解一下?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-06-17

sub 跟 end sub 是配对的

过程调用请用call 

比如

sub a()
    call b()
end sub

sub b()
    msgbox("123")
end sub

 举例修改你的第一个

Private Sub ToggleButton2_Click()
    ‘Sub 阶乘函数() 这行注释掉 就是一个完整的按钮点击过程
        Dim X As Integer
        X = Val(InputBox("请输入N:", "求阶乘"))
        MsgBox X & "的阶乘数为:" & Fact(X), vbOKOnly, "求阶乘"
End Sub

追问

意思是‘Sub 阶乘函数()这一行删掉吗?

追答

既然底下是阶乘 ,不删掉注释掉更好,提高程序可阅读性。
英文输入法 语句开头的单引号' 起到注释作用
楼下 lgf126 太给力了 直接给答案。。。。

相似回答