下面是单独计算测试 
dd等于0 to 11( 12个复选框) 
如dd 分别等于0,10(复选0和复选10被选择),下面代码可以得到正确数据 If Form9.Option1(1) = True And Form9.Option2(1) = True Then '保留 
            
            If (ww(10) <> mi(10) Or ww(0) <> mi(0)) And Form9.Check1(dd).Value Then MSFlexGrid1.RemoveItem i 
                    
                End If 
如dd 分别等于0,10,11(复选0和复选10和复选11被选择),下面代码可以得到正确数据 
If Form9.Option1(1) = True And Form9.Option2(1) = True Then '保留 
            
            If (ww(10) <> mi(10) Or ww(11) <> mi(11)) And (ww(10) <> mi(10) Or ww(0) <> mi(0)) And (ww(11) <> mi(11) Or ww(0) <> mi(0)) And Form9.Check1(dd).Value Then MSFlexGrid1.RemoveItem i 
  如dd 分别等于0,1,10,11(复选0和复选10和复选11和复选1被选择),下面代码可以得到正确数据 
                  
                End If 
If Form9.Option1(1) = True And Form9.Option2(1) = True Then '保留 
            
            If (ww(10) <> mi(10) Or ww(11) <> mi(11)) And (ww(10) <> mi(10) Or ww(0) <> mi(0)) And (ww(11) <> mi(11) Or ww(0) <> mi(0)) And (ww(1) <> mi(1) Or ww(11) <> mi(11)) And (ww(1) <> mi(1) Or ww(0) <> mi(0)) And (ww(1) <> mi(1) Or ww(10) <> mi(10)) And Form9.Check1(dd).Value Then MSFlexGrid1.RemoveItem i 
                    
                End If 
。。 
。。 
也就是说俩俩or循环比较,然后再把两辆循环比较的并列 
这个该怎么统一简化该怎么写

解决方案 »

  1.   

    至少
    If Form9.Option1(1) = True And Form9.Option2(1) = True Then '保留 
    可以写成:
    If Form9.Option1(1) And Form9.Option2(1) Then '保留 
                
            
      

  2.   

    虽然还是不太明白你的意思,但下面代码应该可以帮到你吧~~Dim dd As String
    dd = ""
    For i = 0 To 11
        If Form9.Check1(i).Value = 1 Then
            dd = dd & "," & i
        End If
    Next
    If dd = ",0,10,11" Then  '判断你需要用到的选择组合
        MsgBox "选择了0、10、11三个选项", , ""
    End If
      

  3.   

    楼上的老师,判断那个复选被选这个我知道
    看老鸟老师
    对于上个问题的回答
    如复选11被选if ww(11) <> mi(11) then MSFlexGrid1.RemoveItem i 这个结果是我要的,一个的就不用and了 
    如两个被选,如3,6 
    if ww(3) <> mi(3) and ww(6) <> mi(6) then MSFlexGrid1.RemoveItem i 这个结果是我要的 
    如3个被选,如4,5,6 
    if ww(4) <> mi(4) and ww(5) <> mi(5) and ww(6) <> mi(6)then MSFlexGrid1.RemoveItem i 这个结果是我要的 
    如4个被选,如4,5,6,9 
    if ww(4) <> mi(4) and ww(5) <> mi(5) and ww(6) <> mi(6)and ww(9) <> mi(9)then MSFlexGrid1.RemoveItem i 这个结果是我要的 
    ...... 
    ...... 
    ...... 
    如4个被选 
    ....... 
    我想要得结果是这样的,就是想怎么能简化一下像ww(dd) <> mi(dd)then MSFlexGrid1.RemoveItem i 
              老鸟老师用bCanRemove = True
    for dd=0 to Check1.UBound
        if Check1(dd).Value = vbchecked then
            if ww(dd) = mi(dd) then
                bCanRemove = False
                exit for
            end if
        end if
    next
    if bCanRemove then MSFlexGrid1.RemoveItem i
    这个帮我解决了,是对的
    那么f (ww(10) <> mi(10) Or ww(11) <> mi(11)) And (ww(10) <> mi(10) Or ww(0) <> mi(0)) And (ww(11) <> mi(11) Or ww(0) <> mi(0)) And Form9.Check1(dd).Value then MSFlexGrid1.RemoveItem i
    这样的怎么办也就是如果dd分别等于2,3,6,(复选2,3,6)被选
    那么条件2要和条件3 or比较一下,条件2要和条件6比较一下,条件3要和条件6比较一下,也就是不管dd分别等于几个数,
    那么它每一个数都要和其他数or比较一次,然后再and比较
    这样的怎么办
      

  4.   

    哦~~终于有点明白你的意思了~~还用原来的代码吧~~
    dim a as Boolean 
    Dim dd As String 
    dim aa() as string
    a=false
    dd = "" 
    For i = 0 To 11 
        If Form9.Check1(i).Value = 1 Then 
            dd = dd & "," & i 
        End If 
    Next  '用dd记录选择了那些选项
    aa()=split(dd,",")  '再将dd里每个数拆开
    for i=1 to 12        '以下代码是循环拆出来的数值,并将每个数值互相比较
        if aa(i)<>"" then
            for ii=1 to 12  '将每一个数值与所有数值比较
                if aa(ii)<>"" then
                    if aa(i)<>aa(ii) then
                      a=true
                      goto err
                    end if
                else
                    exit for
                endif
            next
        else
            exit for
        end if
    next
    err:
    if a=true then
        MSFlexGrid1.RemoveItem i '你要的结果
    end if额~~大概是这样吧?~没测试过~~