【问题标题】:Select all check box to run other selected boxes VBA Excel全选复选框以运行其他选定的框 VBA Excel
【发布时间】:2017-10-20 10:26:50
【问题描述】:

我正在尝试使用“全选”复选框,但是当所有复选框都被选中时,它们不会被执行。

Sheet1 中的字段未导入或设置为 Null。在他们自己的复选框上将数据从 Sheet1 导入到位置,但在 master select all checkbox1 on / off 命令下不起作用。

这是我目前的代码:

Sub SelectAll_CHECK_BOX()
    Dim CB As CheckBox
    For Each CB In ActiveSheet.CheckBoxes
        If CB.Name <> "Check Box 1" Then
            CB.Value = ActiveSheet.CheckBoxes("Check Box 1").Value
        End If
    Next CB
End Sub

其他复选框具有以下代码,每个复选框具有不同的范围值和子名称。

Sub CHECK_BOX_PRODUCT_NAME()
    Dim CB As CheckBox
        For Each CB In ActiveSheet.CheckBoxes
            If CB.Name <> ActiveSheet.CheckBoxes("Check Box 1").Name And CB.Value <> ActiveSheet.CheckBoxes("Check Box 1").Value And ActiveSheet.CheckBoxes("Check Box 1").Value <> 2 Then
                ActiveSheet.CheckBoxes("Check Box 1").Value = 2
                Exit For
            Else
                ActiveSheet.CheckBoxes("Check Box 1").Value = CB.Value
            End If
        Next CB
    Dim xChk As CheckBox
    Set xChk = ActiveSheet.CheckBoxes(Application.Caller)
    With xChk.TopLeftCell.Offset(0, 3)
        If xChk.Value = xlOff Then
            .Value = Null
        Else
            .Value = Sheets("Sheet1").Range("B9")
        End If
    End With
End Sub

这是问题的可视化:

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    您应该尝试将Call CHECK_BOX_PRODUCT_NAME 添加到您的第一个宏。就在 End Sub 之前。

    因为第一个宏只检查第二个复选框,而不是运行第二个复选框的代码。

    【讨论】:

    • 这是我解决问题的命令,但是在第二个宏中,With xChk.TopLeftCell.Offset(0, 3) 行导致 CheckBox1 被视为偏移量的开始.由于我有多个复选框,因此此方法不起作用。这是正在发生的事情的 GIF i.imgur.com/8t5qzUR.gif 除非有办法将输入的目标设置为 .Range("E6"),但不知道如何编写。
    • 如果我理解正确,那么这就是你可以做的。从 'Dim xChk' 中删除所有代码,并将其替换为这行代码 Range("E6").Value = Sheets("Sheet1").Range("B9")
    • 我已经尝试了你的方法,稍作修改,让我知道你的想法。生病将此消息分成 3 个子项,以供人们将来参考。对于全选按钮Sub SelectAll_CHECK_BOX() Dim cb As CheckBox Call SELECTALL_OVERIDE For Each cb In ActiveSheet.CheckBoxes If cb.Name &lt;&gt; "Check Box 1" Then cb.Value = ActiveSheet.CheckBoxes("Check Box 1").Value End If Next cb End Sub
    • 调用函数Sub必须分开否则在循环中不起作用Sub SELECTALL_OVERIDE() If ActiveSheet.CheckBoxes("Check Box 1").Value = xlOff Then ActiveSheet.Range("E6").Value = clearcontent ActiveSheet.Range("E10").Value = Date Else Sheets("Sheet1").Range("B9").Copy ActiveSheet.Range("E6").PasteSpecial xlPasteValues Sheets("Sheet1").Range("B12").Copy ActiveSheet.Range("E10").PasteSpecial xlPasteValues End If End Sub
    • 其他复选框代码保持如上。这是 CheckBoxses 在行动i.imgur.com/AtxGusu.gif
    猜你喜欢
    • 1970-01-01
    • 2014-03-12
    • 2020-10-12
    • 1970-01-01
    • 2019-03-31
    • 1970-01-01
    • 2021-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多