这是我在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'。宏可能在此工作簿中不可用,或者可能禁用所有宏。我更改了名称框中复选框的名称,并选中了三个复选框,并且它们的名称正确...
我想知道如何在没有弹出消息的情况下使这个功能正常工作,并且没有错误。
答案 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