如果在按下命令按钮时单击复选框,则删除单元格的内容

时间:2013-08-12 13:26:39

标签: excel vba conditional selection

我正在构建订单配置电子表格。各种产品类别都有不兼容的选项,因此我在A列中创建了一些复选框。我想创建一个控制按钮,从列H:L中选择每行的内容,其中包含一个选中的复选框并将其删除,然后取消选中该复选框。我真的不知道如何编写这样的代码。非常感谢您的帮助。

Sub EliminateCheckBoxes() 
    Dim CB As CheckBox, n As Long, x As Long 
    n = ActiveSheet.CheckBoxes.Count 
    For x = n To 1 Step -1 
        Set CB = ActiveSheet.CheckBoxes(x) 
        If CB.Name <> "Check Box 1" Then 
    Next x 
End Sub

1 个答案:

答案 0 :(得分:3)

您需要使用链接到相关行的复选框的属性。要么(如果链接)使用.LinkedCell(字符串然后获取范围对象),否则如果位于相关行上则.TopLeftCell(范围)

E.g:

'Using LinkedCell
Range(cb.LinkedCell).EntireRow.Range("H1:L1").Delete

'or using TopLeftCell
cb.TopLeftCell.EntireRow.Range("H1:L1").Delete

cb.Value = -4146 'uncheck the checkbox

上面的代码示例以及是否选中该复选框的附加检查:

Sub EliminateCheckBoxes() 
    Dim CB As CheckBox, n As Long, x As Long 
    n = ActiveSheet.CheckBoxes.Count 
    For x = n To 1 Step -1 
        Set CB = ActiveSheet.CheckBoxes(x)
        If CB.Name <> "Check Box 1" Then 'are you intentionally excluding Check Box 1?
            If CB.Value = 1 then
                CB.TopLeftCell.EntireRow.Range("H1:L1").ClearContents
                CB.Value = -4146 'uncheck the checkbox
            End If
        End If
    Next x 
End Sub