返回CheckBoxes.LinkedCell地址的VBA

我使用下面的代码自动生成一个新的checkbox,并将一个单元格链接到它:

ActiveSheet.CheckBoxes.Add().LinkedCell = Selection.Address 

我想创build另一个应该改变checkbox的.LinkedCell单元格的背景颜色,当checkbox被选中(蓝色)或未选中(红色)。 工作表中将有大约200个checkbox。

有没有办法获取/返回当前选中/未选中checkbox的.LinkedCell地址,以便该sub可以更改该单元格的背景颜色?

例如,让我们假定.LinkedCell是最初放置checkbox的单元格。 这将是每个checkbox的初始状态:

在这里输入图像说明

这将是用户检查/取消选中checbox后的结果:

在这里输入图像说明

直到现在我用这个代码来改变checkbox本身的背景颜色。 但是我不想那个,我想改变.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 

你可以用下面的代码replace你的CheckedUnchecked代码:

 Sub CheckedUnchecked() With ActiveSheet.Range(ActiveSheet.CheckBoxes(Application.Caller).LinkedCell) If .Value Then .Interior.ColorIndex = 5 Else .Interior.ColorIndex = 3 End If End With End Sub