For dd = 0 To 11 
    For ii = 0 To Form9.List1.ListCount - 1
        str = Form9.List1.List(ii)
        sz = Split(str, ",")
        st = sz(0)
        Form9.List1.ListIndex = ii
        si(0) = st Mod 10
        si(1) = (st \ 10) Mod 10
        si(2) = (st \ 100) Mod 10
        si(3) = IIf(si(0) >= si(1), IIf(si(0) >= si(2), si(0), si(2)), IIf(si(1) >= si(2), si(1), si(2)))  
         si(4) = IIf(si(0) <= si(1), IIf(si(0) <= si(2), si(0), si(2)), IIf(si(1) <= si(2), si(1), si(2)))  
        si(5) = (si(0) Mod 2) + (si(1) Mod 2) + (si(2) Mod 2)  
        si(6) = IIf(si(0) >= 5, 1, 0) + IIf(si(1) >= 5, 1, 0) + IIf(si(2) >= 5, 1, 0) 
        si(7) = fq(st)   
        si(8) = fw(st)
        si(9) = si(0) + si(1) + si(2) 
        si(10) = si(3) - si(4) 
        si(11) = si(9) - si(3) - si(4)  
        si(12) = si(3) + si(11) - si(4)  
        si(13) = si(11) + si(4)
        si(14) = fi(st)  
        si(15) = fr(st) 
        si(16) = fq(st) - (si(9) - fq(st)) 
        If Form9.Check1(0).Value = 1 Then mi(0) = si(7) 
        If Form9.Check1(1).Value = 1 Then mi(1) = si(8)
        If Form9.Check1(2).Value = 1 Then mi(2) = si(16) 
        If Form9.Check1(3).Value = 1 Then mi(3) = si(9) 
        If Form9.Check1(4).Value = 1 Then mi(4) = si(10) 
        If Form9.Check1(5).Value = 1 Then mi(5) = si(11) 
        If Form9.Check1(6).Value = 1 Then mi(6) = si(12) 
        If Form9.Check1(7).Value = 1 Then mi(7) = si(13) 
        If Form9.Check1(8).Value = 1 Then mi(8) = si(14) 
        If Form9.Check1(9).Value = 1 Then mi(9) = si(15) 
        If Form9.Check1(10).Value = 1 Then mi(10) = si(5) 
        If Form9.Check1(11).Value = 1 Then mi(11) = si(6) 
         For i = MSFlexGrid1.Rows - 1 To 1 Step -1
            bb = MSFlexGrid1.TextMatrix(i, 1)
            si(0) = bb Mod 10
            si(1) = (bb \ 10) Mod 10
            si(2) = (bb \ 100) Mod 10
            si(3) = IIf(si(0) >= si(1), IIf(si(0) >= si(2), si(0), si(2)), IIf(si(1) >= si(2), si(1), si(2)))   
            si(4) = IIf(si(0) <= si(1), IIf(si(0) <= si(2), si(0), si(2)), IIf(si(1) <= si(2), si(1), si(2)))  
            ww(10) = (si(0) Mod 2) + (si(1) Mod 2) + (si(2) Mod 2) 
            ww(11) = IIf(si(0) >= 5, 1, 0) + IIf(si(1) >= 5, 1, 0) + IIf(si(2) >= 5, 1, 0) 
            ww(0) = fq(bb) 
            ww(1) = fw(bb) 
            ww(3) = si(0) + si(1) + si(2) 
            ww(4) = si(3) - si(4) 
            ww(5) = ww(3) - si(3) - si(4) 
            ww(6) = si(3) + ww(5) - si(4) 
            ww(7) = ww(5) + si(4) 
            ww(8) = fi(bb) 
            ww(9) = fr(bb) 
            ww(2) = fq(bb) - (ww(3) - fq(bb)) 
              If Form9.Option1(0) = True And Form9.Option2(0) = True Then '删除 
              If ww(dd) = mi(dd) And Form9.Check1(dd).Value = 1 Then MSFlexGrid1.RemoveItem i
              ElseIf Form9.Option1(0) = True And Form9.Option2(1) = True Then  '保留 
              If ww(dd) <> mi(dd) And Form9.Check1(dd).Value Then  MSFlexGrid1.RemoveItem i              End If
              If Form9.Option1(1) = True Then '删除             
              If Form9.Option2(0) = True Then
                If ww(dd) = mi(dd) And Form9.Check1(dd).Value Then
                    Mark(nv) = bb 
                    ReDim Preserve Mark(nv + 1) 
                    nv = nv + 1 
                End If
                End If
                End If
                
             If Form9.Option1(1) = True Then '保留
             If Form9.Option2(1) = True Then
             If ww(dd) <> mi(dd) And Form9.Check1(dd).Value Then
                    Mark(nv) = bb 
                    ReDim Preserve Mark(nv + 1) 
                    nv = nv + 1 
                End If
                End If
                End If
        Next
    Next
Next
   
For myi = LBound(Mark) To UBound(Mark)'通用
    nx = 0
    For myj = LBound(Mark) To UBound(Mark)
        If Mark(myi) = Mark(myj) Then nx = nx + 1
    Next myj
    If nx > 1 Then  
        Debug.Print Mark(myi)
      
        For myk = MSFlexGrid1.Rows - 1 To 1 Step -1            If Mark(myi) = MSFlexGrid1.TextMatrix(myk, 1) Then MSFlexGrid1.RemoveItem myk
        Next myk
    End If
Next
End If
两个删除都是正确的,老师您看看上面还有两个保留的,拿第一个举例
ElseIf Form9.Option1(0) = True And Form9.Option2(1) = True Then  '保留 
              If ww(dd) <> mi(dd) And Form9.Check1(dd).Value Then  MSFlexGrid1.RemoveItem i
这个保留,最后的结果是既符合又符合又符合。。这样就不对了,应该是符合+符合+符合+也就是递增
我现在要的就是,效果就是上面删除的那些保留下来,和删除的正好相反,如上面删除了58个数,那么保留就要保留这58个数
如果我添加一个list2
If ww(dd) = mi(dd) And Form9.Check1(dd).Value Then List2.AddItem bb
那么这个list2里的结果是正确的,只不过有重复的,如果再用list2和MSFlexGrid1比较这样很麻烦
这两个保留该怎么改比较简单