Office中国论坛/Access中国论坛

标题: [求助]请问,以下一段代码怎么会进入死循环? [打印本页]

作者: zldccmx    时间: 2006-7-30 02:31
标题: [求助]请问,以下一段代码怎么会进入死循环?
'以下是一段代码,希望对窗体中24个checkbox进行赋值。由于checkbox2、checkbox22、checkbox23与其它checkbox的值是排异的,也就是说当checkbox2、checkbox22、checkbox23分别选中时其它各个就为非选中状态。
'为什么当在这三个checkbox2、checkbox22、checkbox23中相互点击时会出现死循环?
'按CTRL+BREAK可中断,跟踪发现只在第10至第50条语句之间(或者是80-120)重复执行,60语句却不执行。晕啊!
10 Private Sub CheckBox22_Click()
20  For i = 1 To 24
30     Controls("checkbox" & i).Value = 0
40 Next
50 CheckBox22.Value = 1
60 TextBox2.Text = CheckBox22.Caption
70 End Sub
80 Private Sub CheckBox23_Click()
90  For i = 1 To 24
100     Controls("checkbox" & i).Value = 0
110 Next
120 CheckBox23.Value = 1
130 TextBox2.Text = CheckBox23.Caption
140 End Sub
150 Private Sub CheckBox2_Click()
160 For i = 1 To 24
170     Controls("checkbox" & i).Value = 0
180 Next
190 CheckBox2.Value = 1
200 TextBox2.Text = CheckBox2.Caption
210 End Sub

'请问,如何修改以上代码??
'先谢谢大家了!!
作者: 老鬼    时间: 2006-7-31 03:55
估计是代码对某个控件的赋值触发了控件的事件,而事件中的代码又对控件进行了赋值而触发控件的事件,从而引起死循环。
作者: heusinger    时间: 2006-8-3 03:04
我估计,仅以第一个SUB为例子,

10 Private Sub CheckBox22_Click()
20  For i = 1 To 24
30     Controls("checkbox" & i).Value = 0
40 Next
50 CheckBox22.Value = 1
60 TextBox2.Text = CheckBox22.Caption
70 End Sub

第50句就又触发了CheckBox22_Click事件,可用F8来逐句查看,看看程序运转的流程。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3