【发布时间】:2020-03-19 19:48:59
【问题描述】:
我正在用 Excel VBA 练习一个类模块。
我手动插入了一个空白用户表单。从现在开始,将不再手动添加任何控件。
一旦你初始化了用户窗体,它就会在窗体的左上角出现一个命令按钮。
现在,单击该按钮,您将在第一个按钮的正下方看到另一个命令按钮。
单击新创建的按钮应在前一个按钮下方创建另一个按钮。只要您继续单击新创建的命令按钮,该过程就会继续进行。
问题
我在初始化用户窗体时创建了第一个按钮,并在下面创建了一个新按钮。
之后,单击第二个/新创建的按钮时没有任何反应。
用户表单代码
Dim A As New Class2 ' Create an object of the Class (where we declared the events).
Private Sub UserForm_Initialize()
' Create and add the button control.
Dim btEx As MSForms.CommandButton
Set btEx = UserForm1.Controls.Add("Forms.CommandButton.1")
With btEx
.Top = 12
.Left = 12
.Width = 72
.Height = 36
.Caption = "Click Me"
End With
Set A.btEvents = btEx
End Sub
类模块
Public WithEvents btEvents As MSForms.CommandButton
Private Sub btEvents_click()
' Create and add the button control.
Dim btEx As MSForms.CommandButton
Set btEx = UserForm1.Controls.Add("Forms.CommandButton.1")
With btEx
.Top = 30
.Left = 30
.Width = 72
.Height = 36
.Caption = "Click Me"
End With
End Sub
我无法将事件分配给类模块中动态创建的命令按钮。
是我遗漏了什么还是在平台上不可能?
【问题讨论】:
-
你需要有一个集合来保存你需要的所有类 每个按钮 1 个,我会在你设置后进行更新。
btEvents类似Dim a() as Class2你可以也可以使用这个数组的大小来帮助你在课堂上的间距。 -
@Nathan_Sav 非常感谢您的评论。我已经阅读了很多关于这方面的文章和解决方案,同样,我确实在概念上理解了你的建议,但我在这里看到的只是,它将如何在语法上呈现!请。
-
@Nathan_Sav:非常感谢,先生。对于您在评论中的陈述,“有一个集合来保存每个按钮所需的所有类”。这导致我完善自己的解决方案。再次感谢您。