Private Sub Command20_Click()Dim i&, j&, m&, tn&(2), ts$(2), n() As Bytets(0) = "01234"
ts(1) = "56789"
ts(2) = ""For i = list1.ListCount - 1 To 0 Step -1
If Form3.Check1.Value = 1 Then
tn(0) = 3
tn(1) = 0
tn(2) = 0If Form3.Check2.Value = 1 Thentn(0) = 2
tn(1) = 1
tn(2) = 0End If
End If
n = StrConv(list1.List(i), 128)For j = 0 To 2
For m = 0 To 2
If InStr(ts(m), Chr(n(j))) > 0 Then tn(m) = tn(m) - 1
Next
Next
If tn(0) = 0 And tn(1) = 0 And tn(2) = 0 Then Else list1.RemoveItem iNext
End Sub
这个代码为什么单独选一个复选好使,选择两个就会只显示Check2的数据呢,修改什么语句能使选择两个后,两个数据都显示呢

解决方案 »

  1.   

    这个代码为什么单独选一个复选Check1或者Check2好使,选择两个Check2和Check1都画对号就会只显示Check2的数据呢,修改什么语句能使选择两个后,两个数据都显示呢,比如但选Check1输出012,单选Check2输出016,两个都选。输出012
    016
      

  2.   

    你原来代码格式化后
    Private Sub Command20_Click()    Dim i&, j&, m&, tn&(2), ts$(2), n() As Byte
        
        ts(0) = "01234"
        ts(1) = "56789"
        ts(2) = ""
        
        For i = list1.ListCount - 1 To 0 Step -1
            If Form3.Check1.Value = 1 Then
                tn(0) = 3
                tn(1) = 0
                tn(2) = 0
                
                If Form3.Check2.Value = 1 Then
                
                tn(0) = 2
                tn(1) = 1
                tn(2) = 0
                
                End If
            End If
            n = StrConv(list1.List(i), 128)
            
            For j = 0 To 2
                For m = 0 To 2
                If InStr(ts(m), Chr(n(j))) > 0 Then tn(m) = tn(m) - 1
                Next
            Next
            If tn(0) = 0 And tn(1) = 0 And tn(2) = 0 Then Else list1.RemoveItem i
        
        Next
    End Sub
    看出问题在哪了吗
      

  3.   

    Private Sub Command20_Click()     Dim i&, j&, m&, tn&(2), ts$(2), n() As Byte 
        
        ts(0) = "01234" 
        ts(1) = "56789" 
        ts(2) = "" 
        
        For i = list1.ListCount - 1 To 0 Step -1 
            If Form3.Check1.Value = 1 Then 
                tn(0) = 3 
                tn(1) = 0 
                tn(2) = 0 

                
                If Form3.Check2.Value = 1 Then 
                
                tn(0) = 2 
                tn(1) = 1 
                tn(2) = 0
     
                
                End If 
            End If 
            n = StrConv(list1.List(i), 128) 
            
            For j = 0 To 2 
                For m = 0 To 2 
                If InStr(ts(m), Chr(n(j))) > 0 Then tn(m) = tn(m) - 1 
                Next 
            Next 
            If tn(0) = 0 And tn(1) = 0 And tn(2) = 0 Then Else list1.RemoveItem i 
        
        Next 
    End Sub 后面付值把前面冲没了
      

  4.   


                    If Form3.Check1.Value = 1 Then 
                tn(0) = 3 
                tn(1) = 0 
                tn(2) = 0 
                
                If Form3.Check2.Value = 1 Then 
                
                tn(0) = 2 
                tn(1) = 1 
                tn(2) = 0 
     和这段是不是有冲突 If tn(0) = 0 And tn(1) = 0 And tn(2) = 0 Then Else list1.RemoveItem i 
        如果我把If Form3.Check2.Value = 1 Then 
                
                tn(0) = 2 
                tn(1) = 1 
                tn(2) = 0 
    改成If Form3.Check2.Value = 1 Then 
                
                tn(3) = 2 
                tn(4) = 1 
                tn(5) = 0 
    在If tn(0) = 0 And tn(1) = 0 And tn(2) = 0 Then Else list1.RemoveItem i 
    后面加一句If tn(3) = 0 And tn(4) = 0 And tn(5) = 0 Then Else list1.RemoveItem i 
    这样怎么样
      

  5.   

    用这个代码改,刚才那个不好使
    Private Sub Command20_Click()Dim i&, j&, m&, tn&(2), ts$(2), n() As Bytets(0) = "01234"
    ts(1) = "56789"
    ts(2) = ""For i = list1.ListCount - 1 To 0 Step -1
    If Form3.Check1.Value = 1 Then
    tn(0) = 3
    tn(1) = 0
    tn(2) = 0
    End If
    If Form3.Check2.Value = 1 Then
    tn(0) = 2
    tn(1) = 1
    tn(2) = 0
    End Ifn = StrConv(list1.List(i), 128)For j = 0 To 2
    For m = 0 To 2
    If InStr(ts(m), Chr(n(j))) > 0 Then tn(m) = tn(m) - 1
    Next
    Next
    If tn(0) = 0 And tn(1) = 0 And tn(2) = 0 Then Else list1.RemoveItem iNext
    End Sub
      

  6.   


    Dim i&, j&, m&, tn&(5), ts$(2), n() As Byte