勾选并取消选中复选框后,使复选框可见且不可见

时间:2014-09-16 16:50:17

标签: excel excel-vba vba

这是我在Tim Williams的模块1中放入的代码

    Sub Tester()
        Dim isOn As Boolean

        With ActiveSheet
        Application.Caller = MuddyBoots
            isOn = (.CheckBoxes(Application.Caller).Value = xlOn)
            .CheckBoxes("TabletUser").Visible = isOn
            .CheckBoxes("WebUser").Visible = isOn
        End With
    End Sub

我有三个复选框:

MuddyBoots TabletUser WEBUSER

当勾选MuddyBoots时,我希望TabletUser和WebUser可见,当MuddyBoots未被攻击时,我希望TabletUser和WebUser这两个复选框不可见。

有效的代码如下:

    Public Sub TestCheckbox()
 Dim s As Shape

 Set s = ActiveSheet.Shapes("MuddyBoots")

  s.Select

  If Selection.Value = xlOn Then
     MsgBox "Checked"
     ActiveSheet.CheckBoxes("TabletUser").Visible = True
     ActiveSheet.CheckBoxes("WebUser").Visible = True
     'code here
 Else
     MsgBox "Not checked"
     ActiveSheet.CheckBoxes("WebUser").Visible = False
     ActiveSheet.CheckBoxes("TabletUser").Visible = False
     'code here
 End If

End Sub

如果在确定弹出消息后取消MuddyBoots,则会删除两个复选框。如果我注释掉msgbox行,它就不起作用了。然后我必须重新启动VBA代码。

这些是表单控件。

我也收到错误消息:无法运行宏新用户表单宏'!CheckBox17_Click'。宏可能在此工作簿中不可用,或者可能禁用所有宏。我更改了名称框中复选框的名称,并选中了三个复选框,并且它们的名称正确...

我想知道如何在没有弹出消息的情况下使这个功能正常工作,并且没有错误。

1 个答案:

答案 0 :(得分:1)

Sub Tester()
    Dim isOn As Boolean

    With ActiveSheet
        'Application.Caller = name of calling shape
        isOn = (.CheckBoxes(Application.Caller).Value = xlOn)
        .CheckBoxes("TabletUser").Visible = isOn
        .CheckBoxes("WebUser").Visible = isOn
    End With

End Sub