2017-09-15 75 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