代码如下:
Private Sub chkAll_Click()    If chkAll Then
    
        chkDX.Value = 1
        chkHL.Value = 1
        
    Else
    
        chkDX.Value = 0
        chkHL.Value = 0
        
    End If
    
End SubPrivate Sub chkDX_Click()    If chkDX.Value Then
    
        If chkDX.Value And chkHL.Value Then
        
            chkAll.Value = 1 '全部
            
        End If
    
    Else
    
        chkAll.Value = 0 '全部
    
    End IfEnd SubPrivate Sub chkHL_Click()    If chkHL.Value Then
    
        If chkDX.Value And chkHL.Value Then
        
            chkAll.Value = 1 '全部
            
        End If
        
    Else
    
        chkAll.Value = 0 '全部
        
    End If
    
End Sub默认chkAll.value=1,chkDX.value=1,chkHL.value=1,我想达到的效果是:当我点击取消chkHL,chkAll.value=0,chkDX不变,可运行后的结果是全部value都为0了,我逐句跟踪后发现,程序在运行完chkHL_Chick后又执行了chkAll_Chick。为什么会这样子执行呢?这是为什么,谁能给我讲讲!?我这程序该怎么改呢?

解决方案 »

  1.   

    改变一个 CheckBox 控件的 Value 属性的设置会激活Click 事件
      

  2.   

    Private Sub chkAll_Click()
        If chkAll.Value = 0 Then Exit Sub‘加上这一句
        If chkAll Then
        
            chkDX.Value = 1
            chkHL.Value = 1
            
        Else
        
            chkDX.Value = 0
            chkHL.Value = 0
            
        End If
        
    End Sub
      

  3.   

    把:
    Private Sub chkAll_Click()    If chkAll Then
        
            chkDX.Value = 1
            chkHL.Value = 1
            
        Else
        
            chkDX.Value = 0
            chkHL.Value = 0
            
        End If
        
    End Sub改成:
    Private Sub chkAll_Click()    If chkAll Then
        
            chkDX.Value = 1
            chkHL.Value = 1
            
        Else
            If chkDX Then
                chkDX.Value = 1
                chkHL.Value = 0
            Else
                chkDX.Value = 0
                chkHL.Value = 0
            End If
        End If
        
    End Sub
      

  4.   

    谢谢,programfish(努力成为程序员),我按你的方法搞定了!!