1

我目前正在尝试在复选框的 onclick 事件中调用 Sub 。我想要做的是获取我单击的复选框的 groupName、Name 和 Value 参数,并将它们输入到一个 sub 中,该 sub 使用变量将组中的其余复选框切换为隐藏或取消隐藏。但是,我希望有多个组复选框具有相同的功能,而不是为每个 onclick 事件创建多个函数,我希望能够调用每次处理可见性变化的子程序。

应用示例

考虑上面的图像。如果我将“管理员”复选框设置为 false,则应隐藏同一框中的“旧版本”复选框。如果我检查它为真,它应该再次显示。我也想对客户端框做同样的事情。我在网上看过很多人推荐使用 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  

提前致谢。

4

1 回答 1

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
于 2012-07-04T12:10:37.760 回答