2017-09-15 11 views
0

問題があります。Microsoft Visual Basic(チェックボックスの関係)

私は今Microsoft Word 2013で作業しています。私は4つのチェックボックスを作った: "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がオフになっべきこと - にも未確認となってCをBする必要がありますか?または他の組み合わせ(2つはチェック済み、2つはチェックされていません)と状態はどちらかに変わりますか? –

+1

Wordにシートがないため、MS-Wordでエラーが発生する可能性が最も高いため、 'ActiveSheet'は宣言されていません。あなたが望む動作に関して、もしそれらがちょうど4つのチェックボックスであれば、おそらくForループは必要ないでしょう。 –

+0

@paulbica お返事ありがとうございます。たとえば : ___Scenario 1:_______ あなたは "" それは __Scenario可能です。3.選択解除 2. "A"、 "B" と "C" を選択1. 2:___________ 1.あなたが選びます " A "、" B "、" C "を選択します。 2." B "を選択解除します 3." A "も自動的に選択解除されます ___シナリオ3:___________ 1." 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