将控件添加到帧中的Excel用户窗体与VBA
题
我需要动态地创建标签和按钮,然后将它们一个窗体内添加到帧。我该怎么做呢?好像它的应该的更容易比它确实是。
解决方案
下面的代码说明了如何可以动态与对照用户窗体填充帧...
在我用我有名为Frame1中的帧控制,所以在UserForm_Initialize调用Frame1.Controls.Add嵌入在帧中的控制形式。您可以设置您的用户窗体代码模块中定义该被返回到WITHEVENTS控制控制变量,所以你可以到你想要的任何控件的事件作出回应...
所以用这个方法,你需要预先写上你要为你创造任何控件的任何事件代码...
另外请注意,您可以位置和大小的控制,即便上,左,宽度和高度属性不一定拿出在智能感知...
Private WithEvents Cmd As MSForms.CommandButton
Private WithEvents Lbl As MSForms.Label
Private Sub UserForm_Initialize()
Set Lbl = Frame1.Controls.Add("Forms.Label.1", "lbl1")
Lbl.Caption = "Foo"
Set Cmd = Frame1.Controls.Add("Forms.CommandButton.1", "cmd1")
End Sub
Private Sub Cmd_Click()
Cmd.Top = Cmd.Top + 5
End Sub
Private Sub Lbl_Click()
Lbl.Top = Lbl.Top + 5
End Sub
其他提示
我的上面的主题的变化。这仅仅是按钮的4×4阵列虽然。创建一个窗体,这添加到它的代码。相同的概念可以与你的标签中使用(或请参阅前面的回答):
Private cmdLots(20) As MSForms.CommandButton
Private Sub UserForm_Initialize()
For i = 1 To 4
For j = 1 To 4
k = i + (4 * j)
Set cmdLots(k) = UserForm2.Controls.Add("Forms.CommandButton.1", "cmd1")
With cmdLots(k)
.Top = i * 25
.Left = (j * 80) - 50
.BackColor = RGB(50 * i, 50 * j, 0)
.Caption = "i= " & i & " j= " & j
End With
Next j
Next i
End Sub
不隶属于 StackOverflow