Excel 宏从特定单元格中删除复选框

Excel 宏从特定单元格中删除复选框,excel,vba,Excel,Vba,我将复选框拉入电子表格,用于选择某些行项目以获得最终成本。但也有一些不必要的复选框,可能总共有5个左右。我可以使用宏访问这些不需要的复选框中的特定单元格。由于我的数据发生了变化,这些不必要的复选框不会始终位于同一位置,因此我必须一次删除一个复选框,这应该不是问题,因为我不知道从活动单元格中删除复选框的代码。我需要一个代码从活动单元格或选定单元格中删除复选框。我在下面列出了一些我尝试过的代码。第一部分只是让我找到正确的单元格,从中删除复选框。第二部分是两个不同的代码,我曾尝试删除该复选框,但都不起

我将复选框拉入电子表格,用于选择某些行项目以获得最终成本。但也有一些不必要的复选框,可能总共有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

此代码将删除活动单元格中的任何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

如果您知道单元格的地址,那么肯定不需要第一部分,即将所选内容导航到特定单元格。然后使用下面Peter Albert的建议答案,用已知地址替换
ActiveCell.Address
。只要“复选框456”在活动工作表中是有效的形状名称,您的第一次尝试就可以了。如果使用宏记录器,则可能不是这样。您的第二次尝试出错,因为
复选框
不是范围或单元格的属性。Peter,这将删除表单复选框,而不是ActiveX复选框。我猜OP使用的是ActiveX复选框…@SiddharthRout:我想先给Excel CB一个机会,如果不行,就编辑一下。我应该添加ActiveX代码。。。