我正在尝试在复选框的onclick事件中调用Sub。我想要做的是获取我单击的复选框的groupName,Name和Value参数,并将它们提供给一个sub,该子使用变量将组中其余复选框切换为隐藏或取消隐藏。但是,我希望有多个组复选框具有相同的功能,而不是为每个onclick事件创建多个函数,我希望每次只能调用处理可见性变化的sub。
考虑上面的图片。如果我将“管理员”复选框设置为false,则应隐藏同一框中的“旧版本”复选框。如果我将其检查为true,则应再次显示。我也想对客户端盒做同样的事情。我看过网上很多人建议使用ActiveControl.Value或Application.Caller,但这些似乎都不起作用。我到目前为止使用的两个潜艇可以在下面找到。在它的当前状态,
处的应用程序错误 admin_value = ActiveControl.Value
以下是完整的代码段:
Private Sub admin_toggle_Click()
Dim admin_group As String
Dim admin_name As String
Dim admin_value As String
admin_value = ActiveControl.Value
admin_name = ActiveControl.Name
admin_group = ActiveControl.GroupName
Call toggle_options
End Sub
Private Sub toggle_options()
Dim ctl As Control
For Each ctl In Me.Controls
If TypeOf ctl Is MSForms.CheckBox Then
If ctl.GroupName = admin_group Then
If ctl.Name <> admin_name Then
If admin_value = True Then
ctl.Visible = True
Else
ctl.Visible = False
End If
End If
End If
End If
Next ctl
End Sub
提前致谢。
答案 0 :(得分:1)
这是你在尝试的吗?
Private Sub admin_toggle_Click()
Dim ctl As Control
Set ctl = admin_frame.ActiveControl
ShowHideControls admin_frame, ctl
End Sub
Sub ShowHideControls(frme As Control, cb As Control)
Dim c As Control
For Each c In frme.Controls
If TypeOf c Is MSForms.CheckBox Then
If c.Name <> cb.Name Then
If cb.Value = True Then
c.Visible = True
Else
c.Visible = False
End If
End If
End If
Next
End Sub