4

我正在构建一个订单配置电子表格。各种产品类别都有不兼容的选项,所以我在 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
4

1 回答 1

3

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

例如:

'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
于 2013-08-12T14:17:06.473 回答