我需要动态地创建标签和按钮,然后将它们一个窗体内添加到帧。我该怎么做呢?好像它的应该的更容易比它确实是。

有帮助吗?

解决方案

下面的代码说明了如何可以动态与对照用户窗体填充帧...

在我用我有名为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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top