2013-02-19 77 views
4

我将复选框拖入电子表格中,用于选择某些行项目以获取最终成本。有几个不需要的复选框会被拉进来,大概有5个左右。我可以使用宏来获取这些不需要的复选框的特定单元格。这些不需要的复选框并不总是在同一个地方,因为我的数据发生了变化,所以我将不得不一次删除它们,这不应该成为一个问题,除非我不知道要从中删除复选框的代码活动细胞。我需要一个代码来删除活动单元格或选定单元格中的复选框。我已经包含了我在下面尝试过的一些编码。第一部分是让我到正确的单元格删除复选框。第二部分是两个不同的代码,我试图删除复选框,但都没有工作。我感谢你的意见。宏删除某个单元格的复选框

'To delete unwanted checkboxes 
    Sheets("Quote Sheet").Select 
    Range("B9").Select 
    Selection.End(xlDown).Select 
    ActiveCell.Offset(0, -1).Select 

    ActiveSheet.Shapes.Range(Array("Check Box 456")).Select 
    Selection.Delete 
    Selection.Cut 

    ActiveCell.CheckBoxes.Delete 
    Selection.FormatConditions.Delete 
+0

如果你知道单元的地址,你绝对不需要的第一部分,导航选择到特定的细胞。然后在下面使用Peter Albert的建议答案,用已知地址替换“ActiveCell.Address”。 – 2013-02-19 19:27:20

+0

只要“复选框456”是活动工作表中的有效形状名称,您的第一次尝试就应该起作用。如果您使用宏录像机,则可能不是这样。你的第二次尝试是错误的,因为“CheckBoxes”不是范围或单元格的属性。 – 2013-02-19 19:29:46

回答

9

此代码将删除位于活动单元格的任何Excel复选框。

Sub DeleteCheckbox() 
    Dim cb As CheckBox 

    For Each cb In ActiveSheet.CheckBoxes 
     If cb.TopLeftCell.Address = ActiveCell.Address Then cb.Delete 
    Next 
End Sub 

如果你正在使用的ActiveX复选框,此代码将做的工作:

Sub DeleteActiveXCheckbox() 
    Dim obj As OLEObject 
    Dim cb As MSForms.CheckBox 

    For Each obj In ActiveSheet.OLEObjects 
     If TypeOf obj.Object Is MSForms.CheckBox Then 
      Set cb = obj.Object 
      If cb.ShapeRange.Item(1).TopLeftCell.Address = _ 
       ActiveCell.Address Then obj.Delete 
     End If 
    Next 
End Sub 
+1

彼得,这将删除表单复选框,而不是ActiveX复选框。我猜OP是使用ActiveX复选框... – 2013-02-19 19:38:13

+0

谢谢彼得。这工作完美!正是我需要的。 – 2013-02-19 19:44:26

+1

猜猜我错了,然后:) + 1 – 2013-02-19 19:45:24

相关问题