【发布时间】:2017-01-30 09:03:44
【问题描述】:
我有一个 Excel 文档,其中包含代表每个月信息的表格。这些工作表包含成员列表。每张纸上有多个复选框(每张纸大约 250 个)。我想做以下事情。
让我们以几个月 September 和 October 为例。如果我选中September-sheet 上的复选框,则复选框所在的同一单元格的颜色(例如D23)在下一张表上(在本例中为"October")应该变为蓝色。如果未选中相同的复选框(即使将来),则单元格应变为红色。
- 选中
'September'!D:23上的复选框 - 下一张纸上
D23单元格上的颜色October变为蓝色 - 取消选中
'September'!D:23上的复选框 - 下一张纸上
D23单元格上的颜色October变为红色
我解决问题的方法:我写了一个Sub,当创建一个复选框时,它将复选框链接到它所在的单元格(例如D23),这样我就可以知道哪个单元格在下一张纸上选中/取消选中时需要更改:
.LinkedCell = Selection.Address(False, False)
这是我迄今为止尝试过的,但没有成功:
Sub SetMacro()
Dim cb
For Each cb In ActiveSheet.CheckBoxes
If cb.OnAction = "" Then cb.OnAction = "CheckedUnchecked"
Next cb
End Sub
这里是检查/取消检查的代码:
Sub CheckedUnchecked()
With ActiveSheet.Range(ActiveSheet.CheckBoxes(Application.Caller).LinkedCell)
If .Value Then
Worksheet(ActiveSheet.Index + 1).Range(ActiveSheet.CheckBoxes(Application.Caller).LinkedCell).Interior.ColorIndex = 5
Else
Worksheet(ActiveSheet.Index + 1).Range(ActiveSheet.CheckBoxes(Application.Caller).LinkedCell).Interior.ColorIndex = 3
End If
End With
End Sub
对这个问题有什么想法吗?
【问题讨论】: