在Excel中使用VBA将单击行为添加到动态创建的表单控件按钮



作为这个问题的后续,用户表单允许在运行时在多页中创建 x # 个选项卡,每个选项卡都具有相同的控件,我想知道如何设置 .按钮的点击行为。我正在尝试使用以下代码来实现这一点:

For Each ctl In MultiPage1.Pages(NumSegs - 1).Controls
    If TypeOf ctl Is MSForms.CommandButton Then
        ctl.Name = "Segment" & NumSegs & "Button"
        ctl.OnClick = "Span_Form_Click_Handler"
    End If
Next

但当然,似乎没有.点击方法...

定义一个包含事件的变量。一个最小的例子:用户窗体+命令按钮。用户窗体模块中的代码:

Public WithEvents btn As MSForms.CommandButton
Private Sub btn_Click()
    MsgBox "Bla"
End Sub
Private Sub UserForm_Click()
    Set btn = CommandButton1
End Sub

在窗体中单击后,按钮 命令按钮 获取分配的子btn_Click。

为了能够每次调用相同的 sub,您需要将 sub 和 withevents 变量放入一个类中,并为找到的每个 CommandButton 创建此类的实例。

最新更新