vb问题FOR 循环问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 03:04:22
在窗体上建立一个名称为Op1的单选按钮数组,含有三个单选按钮,其标题分别为“10!”“11!”“12!”,Index属性分别为0、1、2;再画一个名称为C1的命令按钮,标题为“计算”;画一个名称为Text1的文本框,如图所示。程序的功能是在选定一个单选按钮并单击“计算”按钮后,可以计算出相应的阶乘值.
Private Sub C1_Click()
If Form1.Op1(Index).Value Then
n = Val(Left(Form1.Op1(Index).Caption, 2))
r = 1
For i = 1 To n
r = r * i
Next
Text1.Text = r
End If
End Sub
为什么只能得到10!啊?

Index的值只有在其Op自己的模块下有效,你在C1_Chilk()下调用Index是无效的,此时Index默认为变量,初始值为0,所以只能得到10!.

'关键是你没有作选择的判断,请看我给你修改后的代码

Private Sub C1_Click()
Dim i As Integer, n As Integer, r As Long
Dim index As Integer
For i = 0 To 2
If Form1.Op1(i).Value = True Then Exit For
Next
If i = 3 Then
MsgBox "你还没作选择!", vbCritical, "出错"
Exit Sub
End If
n = Val(Left(Form1.Op1(i).Caption, 2))
r = 1
For i = 1 To n
r = r * i
Next
Text1.Text = r
End Sub