【发布时间】:2017-01-26 13:16:51
【问题描述】:
我使用以下代码自动生成一个新的复选框并将一个单元格链接到它:
ActiveSheet.CheckBoxes.Add().LinkedCell = Selection.Address
我想创建另一个sub,当复选框被选中(蓝色)或未选中(红色)时,它应该更改复选框的.LinkedCell 单元格的背景颜色。我将在工作表中有大约 200 个复选框。
有没有办法获取/返回当前选中/未选中复选框的.LinkedCell 地址,以便sub 可以更改该单元格的背景颜色?
例如,假设.LinkedCell 是最初放置复选框的单元格。这将是每个复选框的初始状态:
这将是用户选中/取消选中复选框后的结果:
到目前为止,我使用此代码来更改复选框本身的背景颜色。但我不想这样,我想改变.LinkedCell的颜色。
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.Shapes(Application.Caller).DrawingObject
If .Value = 1 Then
.Interior.ColorIndex = 5
Else
.Interior.ColorIndex = 3
End If
End With
End Sub
【问题讨论】:
-
我不确定您所说的“当前选中/未选中复选框”是什么意思?您在寻找活动吗?
-
(a) 您能否根据单元格是
TRUE还是FALSE有条件地格式化单元格? -
(b) 你有链接到 CheckBox 的 Click 事件的代码吗?如果是这样,您应该可以只使用 CheckBox 的 .LinkedCell 属性,然后将该单元格的背景颜色设置为您喜欢的任何颜色。
-
@YowE3K 谢谢你非常聪明的一点(a):) 我详细解释了。尽管如此,我还是想通过某种点击事件来做到这一点......不确定它是如何工作的,但想学习和理解
-
Re (a) - 如果
=TRUE,您可以使用 CF 将其设置为蓝色,如果=AND(cell<>"",cell=FALSE),则设置为红色