チェックボックスを使用してExcelでWBSに取り組んでいます。
私は次のものを持っています:
[checkbox1] レベル A
---------[checkBox2] 項目 1
---------[checkBox3] 項目 2
[checkbox4] レベル B
---------[checkBox5]項目 3
チェックボックス 2 のチェックを外すと、アイテム 1 の隣のセルに X が表示されます。チェックボックス 2 にチェックを入れると、X が削除されます。
チェックボックス 1 のチェックを外すと、チェックボックス 2 とチェックボックス 3 のチェックが外されますが、項目 1 と 2 の隣のセルに X は表示されません。イベントをトリガーせずに 2 つのチェックボックスのチェックを外すだけです。そのイベントをcheckBox1にリンクするにはどうすればよいですか?
フォーム コントロールでその種のイベントをトリガーできない場合、他の質問は、チェックボックスが ActiveX コントロールにある行と列を知る方法を知ることです。
フォーム コントロールでは を使用できますsheets("sheet1").checkboxes(application.caller)
が、これは ActiveX コントロールでは機能しません。
チェックボックス 2 またはチェックボックス 3 のコード:
Sub CheckBoxLine()
Dim ws As Worksheet
Dim chk As CheckBox
Dim lColD, myCol As Long
Dim lColChk As Long
Dim lRow As Long
Dim rngD As Range
lColD = 1 'number of columns to the right
Set ws = ActiveSheet
Set chk = ws.CheckBoxes(Application.Caller)
lRow = chk.TopLeftCell.Row
lColChk = chk.TopLeftCell.Column
Set rngD = ws.Cells(lRow, lColChk + lColD)
Select Case chk.Value
Case 1 'box is checked
rngD.Value = "X"
Case Else 'box is not checked
rngD.Value = "X"
End Select
End Sub
チェックボックス 1 のコード:
Select Case chk.Value
Case 1 'box is checked
For Each cb In ws.CheckBoxes
If cb.Name = "Check box 2" Then
cb.Value = 1
End If
If cb.Name = "Check box 3" Then
cb.Value = 1
End If
Next cb
Case Else 'box is not checked
For Each cb In ws.CheckBoxes
If cb.Name = "Check box 2" Then
cb.Value = 0
End If
If cb.Name = "Check box 3" Then
cb.Value = 0
End If
Next cb
End Select