这段代码哪里不对?

jiafeimao6 2010-11-29 01:07:42
先说明一下这段代码的用途~
我用VB做了一套组选择题~ 每道题有三个选项,option1,optino2,option3,把它们三个封装在一个frame里,一共十道题,所以就把这个frame复制了九次!一共有十组这样的选项,即option1(1....9),option2(1....9),option3(1....9)。。现在想根据
选择结果计算最后分值,i从0到9,选option1(i)的加一分, option2(i)加三分。 option3(i)的加五分~
我写的代码就是下面的,可是最后结果永远都是0。。
有明白的希望可以给我讲解一下,谢谢!

For i = 0 To 9
If Option1(i).Value = True Then
m = 1
ElseIf Option2(i).Value = True Then
m = 3
ElseIf Option2(i).Value = True Then
m = 5
Else
m = 0
End If
sum = sum + m
Next i
(sum 定义在通用变量里,m定义在form1_load里)
...全文
153 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
cbm6666 2010-11-29
  • 打赏
  • 举报
回复
Option 1,2,3 三组控件在 Frame里面 要用至少两个PictureBox等容器 各别包装起来
jiafeimao6 2010-11-29
  • 打赏
  • 举报
回复
可能 我正在研究 因为里面还有command,比较麻烦,呵呵

[Quote=引用 12 楼 zzhgb 的回复:]
不过是不是这样写感觉没什么关系,感觉楼主的代码没有哪里不对,
是不是你测试方法不对
[/Quote]
zzhgb 2010-11-29
  • 打赏
  • 举报
回复
不过是不是这样写感觉没什么关系,感觉楼主的代码没有哪里不对,
是不是你测试方法不对
zzhgb 2010-11-29
  • 打赏
  • 举报
回复
不用,是控件数组的序号,在事件里系统自动生成
jiafeimao6 2010-11-29
  • 打赏
  • 举报
回复
那这个index的值可以在同一个窗体里的command单击事件中调用吗?
要不要把这个index定义在通用变量里?

[Quote=引用 6 楼 chenjl1031 的回复:]
建议不要用Option1控件,因为这些控件不管有多少个,任何时候只能有一个被选中。
用CheckBox控件数组。每一个题的三个答案作为一个控件数组:比如第一个题Check1(0),Check1(1),Check1(2);第二个题Check2(0),Check2(1),Check2(2);等等。便于控制。
下面是第一个题的:


VB code
Private Sub Check1_Cl……
[/Quote]
jiafeimao6 2010-11-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 king06 的回复:]
LZ只是option2,option3名称写错了,别的没问题.
计算前最开始让sum=0
再注意,最后要看的是sum,不是m
[/Quote]
呵呵是啊是啊 有的地方写错了 太着急了忘了检查一下~~~
king06 2010-11-29
  • 打赏
  • 举报
回复
LZ只是option2,option3名称写错了,别的没问题.
计算前最开始让sum=0
再注意,最后要看的是sum,不是m
choovy123 2010-11-29
  • 打赏
  • 举报
回复
m = 1
ElseIf Option2(i).Value = True Then
m = 3
ElseIf Option2(i).Value = True Then
m = 5

估计VB会有问题的

建议OPTION1/2/3/4控件名不重复
东方之珠 2010-11-29
  • 打赏
  • 举报
回复
建议不要用Option1控件,因为这些控件不管有多少个,任何时候只能有一个被选中。
用CheckBox控件数组。每一个题的三个答案作为一个控件数组:比如第一个题Check1(0),Check1(1),Check1(2);第二个题Check2(0),Check2(1),Check2(2);等等。便于控制。
下面是第一个题的:

Private Sub Check1_Click(Index As Integer)
If Index = 0 Then
If Check1(0).Value = 1 Then
Check1(1).Value = 0
Check1(2).Value = 0
Else
If Check1(1).Value = 1 Then
Check1(0).Value = 0
Check1(2).Value = 0
Else
If Check1(2).Value = 1 Then
Check1(0).Value = 0
Check1(1).Value = 0
End If
End If
End If
End If

If Index = 1 Then
If Check1(1).Value = 1 Then
Check1(0).Value = 0
Check1(2).Value = 0
Else
If Check1(0).Value = 1 Then
Check1(1).Value = 0
Check1(2).Value = 0
Else
If Check1(2).Value = 1 Then
Check1(0).Value = 0
Check1(1).Value = 0
End If
End If
End If
End If

If Index = 2 Then
If Check1(2).Value = 1 Then
Check1(1).Value = 0
Check1(0).Value = 0
Else
If Check1(1).Value = 1 Then
Check1(0).Value = 0
Check1(2).Value = 0
Else
If Check1(0).Value = 1 Then
Check1(2).Value = 0
Check1(1).Value = 0
End If
End If
End If
End If
End Sub
布衣散人 2010-11-29
  • 打赏
  • 举报
回复
关键Option1(i).Value = True 这个不能成立,vb这个特殊
布衣散人 2010-11-29
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
Dim m As Integer

For i = 0 To 3
If Option1(i).Value Then
m = 1
ElseIf Option2(i).Value Then
m = 3
ElseIf Option3(i).Value Then
m = 5
Else
m = 0
End If

sum = sum + m
Next i

Debug.Print sum
End Sub
东方之珠 2010-11-29
  • 打赏
  • 举报
回复
你那27个option控件,任何时候,只能选1个.要想在每一组的3个option控件中必须选择1个,就要编程控制
游子 2010-11-29
  • 打赏
  • 举报
回复
路过。。顶楼上。。
贝隆 2010-11-29
  • 打赏
  • 举报
回复
sum=0
m=0
For i=0 to 9
if Option1(i).value =vbchecked then
m=1
Exit for
endif
next i
sum=sum+m

m=0
For i=0 to 9
if Option2(i).value =vbchecked then
m=3
Exit for
endif
next i
sum=sum+m

m=0
For i=0 to 9
if Option3(i).value =vbchecked then
m=5
Exit for
endif
next i
sum=sum+m

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧