2017-09-15 36 views
0

我遇到问题了:)Microsoft Visual Basic(复选框关系)

我现在在Microsoft Word 2013中工作。我做了四个复选框:“A”,“B” ,“C”和“D”。我的愿望是复选框之间有关系。所以如果我检查“A”,那么我想要“B”和“C”也被自动检查。如果我检查“B”,我希望“C”也被自动检查。当我检查“C”时,我希望只检查“C”。如果我检查“D”,那么只需要检查“D”。

我已经找到下一个代码:

Sub SelectAll_Click() 
Dim CB As CheckBox 
For Each CB In ActiveSheet.CheckBoxes 
    If CB.Name <> ActiveSheet.CheckBoxes("Check Box 1").Name Then 
    CB.Value = ActiveSheet.CheckBoxes("Check Box 1").Value 
    End If 
Next CB 
End Sub 

Sub Mixed_State() 
Dim CB As CheckBox 
For Each CB In ActiveSheet.CheckBoxes 
    If CB.Name <> ActiveSheet.CheckBoxes("Check Box 1").Name And CB.Value <> ActiveSheet.CheckBoxes("Check Box 1").Value And ActiveSheet.CheckBoxes("Check Box 1").Value <> 2 Then 
    ActiveSheet.CheckBoxes("Check Box 1").Value = 2 
Exit For 
    Else 
    ActiveSheet.CheckBoxes("Check Box 1").Value = CB.Value 
    End If 
Next CB 
End Sub 

这在Excel中对我的作品,但不是在Word中(我得到一个错误)。但主要问题是,通过此代码选中所有复选框。这不完全是我想要的 。

我希望很清楚我在问什么,我希望你能帮助我。

谢谢!

亲切的问候。

+1

如果A,B,C被选中并且A被取消选中,应该发生什么 - B和C是否也会被取消选中?或者其他组合(其中2个选中,2个未选中)和他们的状态改变方式? –

+1

你很可能会遇到MS-Word的错误,因为Word没有工作表,因此没有声明“ActiveSheet”。关于你想要的行为,如果他们只有4个复选框,你可能甚至不需要一个For循环。 –

+0

@paulbica 感谢您的回应。 例如: ___Scenario一个:_______ 1.您选择 “A”, “B” 和 “C” 2.您取消选择 “A” 3.这是可能 __Scenario 2:___________ 1.您选择“ A“,”B“和”C“ 2.您取消选择”B“ 3.然后”A“也自动取消选择 ___方案三:___________ 1.选择”A“,”B“和”C“ 2.您取消选择“C” 3.然后“A”和“B”也会自动取消选择。 ___________ – KM1234

回答

0

下面是答案(代码),对于处于同一情况的其他人。复选框与对方有很多关系。我有13个复选框。

Private Sub Q1A_Click() 
    If Q1A.Value = True Then 
     Q1B.Value = True 
     Q1C.Value = True 
    End If 
End Sub 

Private Sub Q1B_Click() 
    If Q1B.Value = True Then 
     Q1C.Value = True  
    ElseIf Q1B.Value = False Then 
     Q1A.Value = False 
    End If 
End Sub 

Private Sub Q1C_Click() 
    If Q1C.Value = False Then 
     Q1B.Value = False 
     Q1A.Value = False 
     Q1D.Value = False 
    End If 
End Sub 

Private Sub Q1D_Click() 
    If Q1D.Value = True Then 
     Q1C.Value = True 
    End If 
End Sub 

Private Sub Q1E_Click() 
    If Q1E.Value = True Then 
     Q1F.Value = True 
     Q1G.Value = True 
     Q1H.Value = True 
     Q1I.Value = True 
     Q1J.Value = True 
    End If 
End Sub 

Private Sub Q1F_Click() 
    If Q1F.Value = True Then 
     Q1G.Value = True 
    ElseIf Q1F.Value = False Then 
     Q1E.Value = False 
    End If 
End Sub 

Private Sub Q1G_Click() 
    If Q1G.Value = False Then 
     Q1F.Value = False 
    ElseIf Q1G.Value = False Then 
     Q1E.Value = False 
    End If 
End Sub 

Private Sub Q1H_Click() 
    If Q1H.Value = True Then 
     Q1I.Value = True 
     Q1J.Value = True 
    ElseIf Q1H.Value = False Then 
     Q1E.Value = False 
    End If 
End Sub 

Private Sub Q1I_Click() 
    If Q1I.Value = True Then 
     Q1J.Value = True 
    ElseIf Q1I.Value = False Then 
     Q1H.Value = False 
     Q1E.Value = False 
    End If 
End Sub 

Private Sub Q1J_Click()  
    If Q1J.Value = False Then 
     Q1I.Value = False 
     Q1H.Value = False 
     Q1E.Value = False 
    End If 
End Sub 

Private Sub Q2A_Click() 
    If Q2A.Value = True Then 
     Q2B.Value = True 
     Q2C.Value = True 
    End If 
End Sub 

Private Sub Q2B_Click() 
    If Q2B.Value = True Then 
     Q2C.Value = True 
    ElseIf Q2B.Value = False Then 
     Q2A.Value = False  
    End If 
End Sub 

Private Sub Q2C_Click() 
    If Q2C.Value = False Then 
     Q2B.Value = False 
     Q2A.Value = False 
    End If 
End Sub 

Private Sub Q1A_Click() 
    If Q1A.Value = True Then 
     Q1B.Value = True 
     Q1C.Value = True 
    End If 
End Sub 

Private Sub Q1B_Click() 
    If Q1B.Value = True Then 
     Q1C.Value = True  
    ElseIf Q1B.Value = False Then 
     Q1A.Value = False 
    End If 
End Sub 

Private Sub Q1C_Click() 
    If Q1C.Value = False Then 
     Q1B.Value = False 
     Q1A.Value = False 
     Q1D.Value = False 
    End If 
End Sub 

Private Sub Q1D_Click() 
    If Q1D.Value = True Then 
     Q1C.Value = True 
    End If 
End Sub 

Private Sub Q1E_Click() 
    If Q1E.Value = True Then 
     Q1F.Value = True 
     Q1G.Value = True 
     Q1H.Value = True 
     Q1I.Value = True 
     Q1J.Value = True 
    End If 
End Sub 

Private Sub Q1F_Click() 
    If Q1F.Value = True Then 
     Q1G.Value = True 
    ElseIf Q1F.Value = False Then 
     Q1E.Value = False 
    End If 
End Sub 

Private Sub Q1G_Click() 
    If Q1G.Value = False Then 
     Q1F.Value = False 
    ElseIf Q1G.Value = False Then 
     Q1E.Value = False 
    End If 
End Sub 

Private Sub Q1H_Click() 
    If Q1H.Value = True Then 
     Q1I.Value = True 
     Q1J.Value = True 
    ElseIf Q1H.Value = False Then 
     Q1E.Value = False 
    End If 
End Sub 

Private Sub Q1I_Click() 
    If Q1I.Value = True Then 
     Q1J.Value = True 
    ElseIf Q1I.Value = False Then 
     Q1H.Value = False 
     Q1E.Value = False 
    End If 
End Sub 

Private Sub Q1J_Click() 
    If Q1J.Value = False Then 
     Q1I.Value = False 
     Q1H.Value = False 
     Q1E.Value = False 
    End If 
End Sub 

Private Sub Q2A_Click() 
    If Q2A.Value = True Then 
     Q2B.Value = True 
     Q2C.Value = True 
    End If 
End Sub 

Private Sub Q2B_Click() 
    If Q2B.Value = True Then 
     Q2C.Value = True 
    ElseIf Q2B.Value = False Then 
     Q2A.Value = False 
    End If 
End Sub 

Private Sub Q2C_Click() 
    If Q2C.Value = False Then 
     Q2B.Value = False 
     Q2A.Value = False 
    End If 
End Sub