通过VBA检测对复选框的更改

gra*_*eds 1 excel vba excel-vba

继我之前的问题之后.

客户的要求是在报表上设置复选框以禁用另一个工作表上的信息行.行被定义为命名范围,由P_XXXXXX格式化.XXXXXX是一个唯一标识符,也是行上的一个字段,因此我可以轻松生成范围名称.

我遇到的问题是:

  • 单击项目然后关闭表单Excel询问我们是否要保存.这是不可取的.

我需要在生成的复选框上注册更改事件.因此,如果我可以运行一个或多个更改并隐藏/取消隐藏相关范围.

我添加复选框的代码如下所示:

        ' For each row...

        ' check box in column 17(=Q).
        Dim lCenter As Long
        lCenter = rngCurrent.Width / 4 ' not actual centre but close enough
        With ActiveSheet.CheckBoxes.Add(rngCurrent.Left + lCenter, rngCurrent.Top - 2, rngCurrent.Width, rngCurrent.Height)
            .Interior.ColorIndex = xlNone
            .Caption = ""
        End With
Run Code Online (Sandbox Code Playgroud)

那么如何将复选框中的更改与子/函数链接?

Dic*_*ika 6

每当选中或取消选中复选框时,将Checkboxes对象的OnAction属性设置为要运行的子名称.

Sub MakeCB()

    With ActiveSheet.CheckBoxes.Add(ActiveCell.Left + 0, ActiveCell.Top - 2, ActiveCell.Width, ActiveCell.Height)
        .Interior.ColorIndex = xlNone
        .Caption = ""
        .OnAction = "CheckboxChange"
    End With

End Sub

Sub CheckboxChange()

    MsgBox "change"

End Sub
Run Code Online (Sandbox Code Playgroud)