【发布时间】:2018-01-22 13:40:41
【问题描述】:
我正在尝试实时构建用户表单。 (在 Excel VBA 中)只是为了试用,我从 2 个标签、一个文本框、一个组合框和一个命令按钮开始。我在下面列出了代码 + 生成的表单。
我的问题是:如何获取链接到控件的事件,特别是组合框和命令按钮?通常(使用手动创建的表单),这将由名为 cmbTabel_change() 和 cmdExit_click() 的例程完成。但这似乎不起作用,当它们被动态创建时。谁能帮帮我?
代码:
Private Sub UserForm_Initialize()
Dim cCont As Control
Call Add_Control(cCont, "Label", "lblDatabase", "Database", 30, 23, 60, 18)
Call Add_Control(cCont, "Textbox", "txtDatabase", "Database", 110, 20, 60, 18)
Call Add_Control(cCont, "Label", "lblTabel", "Tabel", 30, 47, 90, 18)
Call Add_Control(cCont, "Combobox", "cmbTabel", "Tabel", 110, 44, 90, 18)
Call Add_Control(cCont, "CommandButton", "cmdExit", "Afsluiten", 210, 140, 54, 18)
End Sub
Private Sub Add_Control(ctrl, ctp, cnm, cap, l, t, w, h)
Set ctrl = Me.controls.Add("Forms." & ctp & ".1", cnm)
With ctrl
.Left = l
.Top = t
.Width = w
.Height = h
End With
Select Case ctp
Case "Combobox"
controls(cnm).Clear
For j = 1 To 5
controls(cnm).AddItem "ListItem" & j
Next j
controls(cnm).ListIndex = 0
Case "Label", "CommandButton"
With controls(cnm)
.Caption = cap
End With
Case "Textbox"
controls(cnm).Text = cap
End Select
End Sub
结果形式:
【问题讨论】:
-
为了向 VBA 项目添加代码,您需要访问 VBA 项目,当您连接到 Internet 时,不建议您授予该权限。任何人都可以控制您的计算机。因此,更好的方法是在创建使用它的表单之前编写代码。