我正在使用带有复选框的 Excel 中的 WBS。
我有以下内容:
[checkbox1] A 级
---------[checkBox2] 项目 1
---------[checkBox3] 项目 2
[checkbox4] B 级
---------[checkBox5]第 3 项
当我取消勾选 checkbox2 时,它会在项目 1 旁边的单元格中放置一个 X 如果我勾选 checkbox2,它将删除 X。
如果我取消勾选 checkbox1,它将取消勾选 checkbox2 和 checkbox3,但它不会在项目 1 和 2 旁边的单元格中放置 X。它只是取消勾选两个复选框而不触发事件。如何将该事件链接到 checkBox1?
如果不可能在表单控件中触发这种事件,我的其他问题是知道如何知道复选框在 ActiveX 控件中所在的行和列?
在表单控件中我们可以使用sheets("sheet1").checkboxes(application.caller)
,但这在 ActiveX 控件中不起作用。
checkbox2 或 checkbox3 的代码:
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