Я работаю над WBS в Excel с флажками.
У меня есть следующее:
[checkbox1] Уровень A
---------[checkBox2] элемент 1
---------[checkBox3] элемент 2
[checkbox4] Уровень B
---------[checkBox5] пункт 3
Когда я снимаю флажок2, он помещает X в ячейку рядом с элементом 1. Если я отмечаю флажок2, он удаляет X.
Если я сниму флажок1, он снимет флажок2 и флажок3, но не поставит X в ячейку рядом с элементом 1 и 2. Он просто снимает два флажка, не вызывая событие. Как связать это событие с checkBox1?
Если невозможно вызвать такое событие в элементе управления формами, мои другие вопросы будут заключаться в том, чтобы узнать, как узнать строку и столбец, где установлен флажок в элементе управления ActiveX?
В Form Control мы можем использовать sheets("sheet1").checkboxes(application.caller)
, но это не работает в ActiveX Control.
Код для флажка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