在运行时通过 VBA 创建一个动态按钮
Create a dynamic button via VBA at runtime
我创建了一个用户窗体,它显示了 table(在文本框内)的一些可以编辑的值和一个命令按钮,用于将这些更改保存回 table。
由于我对各种值使用相同的模板,所以我决定在运行时动态创建用户窗体。但我根本无法让命令按钮工作。我交叉检查了各种示例(在 Whosebug 和其他网站上,例如 and here),但我找不到问题所在。
这是我的(简化)代码。该过程由按钮单击事件本身 (CommandButton1
) 调用。作为解决方法,我创建了一个静态(空)用户窗体 UserForm1
,我将其用作在运行时动态创建窗体的特定配置的起点。从本质上讲,这意味着只有表单元素是动态创建的。至少目前如此,但这很好,因为我只需要在任何给定时间显示一个表单实例。最后,我也想在运行时创建表单:
Private Sub CommandButton1_Click()
'Set Form
UserForm1.Caption = "Test"
'Create Form-Elements (Commandbutton)
Dim cmdButton01 As MSForms.CommandButton
Set cmdButton01 = UserForm1.Controls.Add("Forms.CommandButton.1", "dynCmdButton01")
cmdButton01.Width = 50
cmdButton01.Caption = "Save"
'Show Form
UserForm1.Show
End Sub
Private Sub dynCmdButton01_click()
MsgBox "Test"
End Sub
您应该创建一个 class 模块并通过它分配事件:
dynamically create buttons and assign code for the click event (during runtime)
dynamically assign code to static buttons
我创建了一个用户窗体,它显示了 table(在文本框内)的一些可以编辑的值和一个命令按钮,用于将这些更改保存回 table。
由于我对各种值使用相同的模板,所以我决定在运行时动态创建用户窗体。但我根本无法让命令按钮工作。我交叉检查了各种示例(在 Whosebug 和其他网站上,例如
这是我的(简化)代码。该过程由按钮单击事件本身 (CommandButton1
) 调用。作为解决方法,我创建了一个静态(空)用户窗体 UserForm1
,我将其用作在运行时动态创建窗体的特定配置的起点。从本质上讲,这意味着只有表单元素是动态创建的。至少目前如此,但这很好,因为我只需要在任何给定时间显示一个表单实例。最后,我也想在运行时创建表单:
Private Sub CommandButton1_Click()
'Set Form
UserForm1.Caption = "Test"
'Create Form-Elements (Commandbutton)
Dim cmdButton01 As MSForms.CommandButton
Set cmdButton01 = UserForm1.Controls.Add("Forms.CommandButton.1", "dynCmdButton01")
cmdButton01.Width = 50
cmdButton01.Caption = "Save"
'Show Form
UserForm1.Show
End Sub
Private Sub dynCmdButton01_click()
MsgBox "Test"
End Sub
您应该创建一个 class 模块并通过它分配事件:
dynamically create buttons and assign code for the click event (during runtime)
dynamically assign code to static buttons