在运行时通过 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