【问题标题】:Adding Click Behaviour to Dynamically Created Form Control Button with VBA in Excel在 Excel 中使用 VBA 将单击行为添加到动态创建的表单控件按钮
【发布时间】:2012-06-06 02:25:45
【问题描述】:
作为this question 的后续行动,用户表单允许在运行时在多页中创建 x # 个选项卡,每个选项卡都具有相同的控件,我想知道如何设置按钮的 .OnClick 行为。我正在尝试使用以下代码来实现这一点:
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
但是当然好像没有.OnClick方法...
【问题讨论】:
标签:
excel
vba
button
command
【解决方案1】:
您定义了一个带有事件的变量。
一个最小的例子:用户窗体+命令按钮就可以了。用户窗体模块中的代码:
Public WithEvents btn As MSForms.CommandButton
Private Sub btn_Click()
MsgBox "Bla"
End Sub
Private Sub UserForm_Click()
Set btn = CommandButton1
End Sub
在表单中单击后,CommandButton 按钮获得分配的 sub btn_Click。
为了能够每次调用同一个 sub,您需要将 sub 和 withevents 变量放入一个类中,并为您找到的每个 CommandButton 创建一个此类的实例。