【问题标题】:Toggle checkboxes in a tab based upon master checkbox selection根据主复选框选择切换选项卡中的复选框
【发布时间】:2012-07-03 19:41:55
【问题描述】:

我遇到了 vba 表单中复选框的 onclick 事件问题。基本上我要做的是将特定选项卡上所有复选框的值修改为与主复选框相同的值。在这种情况下,它是下面的“使用在线”标题复选框(代码中的online_toggle),一旦单击该复选框,应将选项卡上的其他复选框切换为“打开”或“关闭”。我目前有以下代码,但它一直在“For Each obj In online.OLEObjects”处产生错误

Private Sub online_toggle_Click()

Dim ctl As Control

For Each ctl In Me.MultiPage1.Pages(6).Controls

    If TypeOf ctl Is MSForms.CheckBox Then
        If ctl.GroupName = "online_variants" Then
        If ctl.Name <> "online_toggle" Then
            ctl.Value = online_toggle.Value
        End If
        End If
    End If

Next ctl

End Sub

注意online 是所有复选框所在的选项卡的名称。如果有帮助,受主复选框影响的复选框都被分组为 online_variants

干杯,

杰森

【问题讨论】:

  • 您使用的是多页还是 Tabstrip?
  • 我认为这是一个标签条。如果有帮助,需要更改的复选框将被分组在名称 online_variants 下。
  • 在那种情况下,我认为它是一个多页。在设计时,在 Tabstrip 中,Tab1 中的控件在 Tab2 中也是可见的,而在 Multipage 中,当您在选项卡之间切换时,您可以看到独立的控件...
  • 在这种情况下,它是一个多页。

标签: vba excel checkbox


【解决方案1】:

在 Mutipage 中,页码从 0 开始,因此如果您尝试引用 Online 选项卡(第 7 个选项卡)中的复选框,请使用此选项

Dim ctl As Control

For Each ctl In Me.MultiPage1.Pages(6).Controls
    If TypeOf ctl Is MSForms.CheckBox Then
        '~~> Your code here
        Debug.Print ctl.Name
    End If
Next

【讨论】:

  • 如果我的理解正确,这就是我现在的代码: Private Sub online_toggle_Click() Dim ctl As Control For Each ctl In Me.MultiPage1.Pages(6).Controls If TypeOf ctl Is MSForms.CheckBox Then If ctl.Name "online_toggle" Then ctl.Object.Value = online.online_toggle.Value End If End If End If Next ctl End Sub - 不过这不起作用。
  • ctl.Object.Value = online.online_toggle.Value 不正确。您可以使用Ctl.Value 而不是直接使用复选框名称,例如Ctl.Value = online_toggle.Value
  • 太好了。然而,它现在已经解决了这个问题,因为我将在一个选项卡上拥有多个主复选框,我只希望那些分配给指定组的复选框受到切换的影响。我猜这只是以某种方式引用组的另一个 IF 条件?
  • 没关系。我自己发现了。我已经修改了上面的代码。感谢您的回复。
  • Gr8... 已经出去了一段时间了 :)
猜你喜欢
  • 1970-01-01
  • 2019-06-26
  • 1970-01-01
  • 2017-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多