如何更改代码以将一个checkbox添加到ActiveCell而不是ActiveSheet?

我有一个写有代码的代码,如果满足某些条件,可以将checkbox添加到ActiveSheet中的某些单元格。 我的代码如下所示,代码。

'To add checkboxes Dim ToRow As Long Dim LastRowCB As Long Dim MyLeft As Double Dim MyTop As Double Dim MyHeight As Double Dim MyWidth As Double LastRowCB = Range("B1000").End(xlUp).Row For ToRow = 11 To LastRowCB If Not IsEmpty(Cells(ToRow, "B")) Then '- MyLeft = Cells(ToRow, "A").Left MyTop = Cells(ToRow, "A").Top MyHeight = Cells(ToRow, "A").Height MyWidth = MyHeight = Cells(ToRow, "A").Width '- ActiveSheet.CheckBoxes.Add(MyLeft, MyTop, MyWidth, MyHeight).Select With Selection .Caption = "" .Value = xlOff .LinkedCell = "R" & ToRow .Display3DShading = False End With End If Next 

我现在试图改变这个代码很小的成功添加完全相同types的checkbox,我激活了一个单元格。 就像我说的我已经激活的单元格,我只需要改变代码,使它只做ActiveCell而不是ActiveSheet。 下面是我所做的改变代码的尝试。 我排除了If语句,因为我的想法是,因为我激活了单元格,我不需要所有这些。

 ActiveCell.CheckBoxes.Add(MyLeft, MyTop, MyWidth, MyHeight).Select With Selection .Caption = "" .Value = xlOff .LinkedCell = "R" & ToRow .Display3DShading = False End With 

当我尝试运行这个代码时,我在下面一行中得到一个Debug。

 ActiveCell.CheckBoxes.Add(MyLeft, MyTop, MyWidth, MyHeight).Select 

任何意见,非常感谢。

checkbox(和其他控件)是工作表的一部分,而不是单元格。

虽然你可以把一个控制“放在”一个单元,但它仍然不是该单元的一部分。

只要继续使用ActiveSheet并使用ActiveCell计算您的MyTop, MyLeft, MyHeightMyWidth值。

 MyLeft = ActiveCell.Left MyTop = ActiveCell.Top MyHeight = ActiveCell.Height MyWidth = ActiveCell.Width ActiveSheet.Checkboxes.Add(MyLeft, MyTop, MyWidth, MyHeight).Select With Selection .Caption = "" .Value = xlOff .LinkedCell = ActiveCell.Address .Display3DShading = False End With 

我已经更新了代码来链接单元格和内容。 你的问题中的第一个代码示例确实显示了如何ActiveCell.Address

如果你想要将它明确linked到R列中的单元格,那么你将需要自己做

例如: .LinkedCell = "R" & ActiveCell.Row否则ActiveCell.Address将链接到您添加checkbox的单元格。