用于从特定单元格中删除复选框的宏

时间:2013-02-19 19:15:31

标签: excel excel-vba vba

我将复选框拉入电子表格,用于选择某些订单项以获得最终费用。虽然有一些不需要的复选框被拉入,但总共大约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

1 个答案:

答案 0 :(得分: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