当勾选和取消选中checkbox时,使checkboes可见和不可见

下面是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 

我有三个checkbox:

MuddyBoots TabletUser WebUser

当勾选MuddyBoots时,我希望TabletUser和WebUser可见,而当MuddyBoots未勾选时,我希望TabletUser和WebUser两个checkbox不可见。

这个工作的代码如下:

  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 

结束小组

如果MuddyBoots在您确定popup消息后取消选中,则会删除两个checkbox。 如果我注释掉msgbox这行不起作用。 然后我必须重新启动VBA代码。

这些是表单控件。

我也收到错误消息:不能运行macros新用户表单macros“!CheckBox17_Click”。 macros可能不在此工作簿中可用或所有macros可能被禁用。 我已经改变名称框中的checkbox的名称,并有三重checkbox,他们有正确的名称…

我想知道如何得到这个function没有popup消息,没有错误请工作。

 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