vb 怎么改

来源:百度知道 编辑:UC知道 时间:2024/06/24 01:44:15
实验窗体有6个Check1,一个按键
Private Sub Command1_Click()
Dim dd, ff As Integer
For dd = 0 To 5
For j = dd + 1 To 5
If Check1(dd).Value = 1 And Check1(j).Value = 1 Then
MsgBox dd & j
End If
Next
Next
End Sub
现在无论窗体怎么选,他都把所选的窗体俩俩循环一遍,然后MsgBox弹出
现在是对的
但我带入到我的工程
for dd = 0 to 5
For j = dd + 1 To 5
If Form9.Check1(dd).Value = 1 And Form9.Check1(j).Value = 1 Then
If (ww(dd) <> mi(dd) Or ww(j) <> mi(j)) And Form9.Check1(dd).Value Then MSFlexGrid1.RemoveItem i
End If
Next
next
现在如果我选择两个Check被选,如Check1(0),Check1(2),
那么第一个代码MsgBox会弹出 02
第二个代码MSFlexGrid1也会输出正确的数值
但如果输入大于2个Check被选,如我现在选择Check1(0),Check1(2),Check1(3),
那么第一个代码MsgBox会分别弹出 02 03 23,这是对的
但对二个代码我要求得到的数据是 If (ww(0) <> mi(0) Or ww(2) <> mi(2)) And Form9.Check1(dd).Value Then MSFlexGrid1.RemoveItem i

If (ww(0) <> mi(0) Or ww(3) <> mi(3)) And Form

你的意思是,所有的配对组合都被检验通过后,才执行
MSFlexGrid1.RemoveItem i
对吧
那么,在循环最开始的地方,for dd = 0 to 5 之前,设置一个标记量
f = 1
把每次判断时候的
If (ww(dd) <> mi(dd) Or ww(j) <> mi(j)) And Form9.Check1(dd).Value Then MSFlexGrid1.RemoveItem i
条件改为等于,MSFlexGrid1.RemoveItem i 改为f = 0
在整个循环结束后,
if f = 1 then
MSFlexGrid1.RemoveItem i
endif

也就是说,认为结果正确(F=1),然后,如果有一个组合判断出不正确,就设置为不正确

另:这样写在没有任何选择的情况下,会认为结果正确,如果不是这样的要求,那么就在
if Form9.Check1(dd).Value = 1 And Form9.Check1(j).Value = 1 Then
后面加一个额外标记量ff = 1
在最后删除的时候判断,也就是说,要求至少有过一次成功判断

有问题可以百度HI找我,我在线