在 Office VBA 2007 MSForms 用户窗体上,是否可以将一组控件作为一个完整的组进行移动



我有一个带有分组控件的Office 2007 MSForms UserForm(在Word中,但这也适用于Excel和PowerPoint(。需要明确的是,它们不在"框架"控件中;相反,我使用 IDE 组/取消分组函数将它们分组在一起。

我正在处理一些Form_Resize代码,我想将组作为完整组移动,而不是单独移动所有控件。

这能做到吗?我找不到任何类型的"对照组"对象来引用。我在调试模式下停止了代码,并检查了Me.*Me.Controls.*下的所有项目,但我找不到任何明显的东西。

为了再次触摸框架控件,我确实发现我可以将控件放在没有标题、背景或边框的框架中,这似乎有效。但分组控制功能更易于使用。

除了您自己建议的解决方案之外,没有其他解决方案。另一种方法是将控件添加到数组中,并对其进行迭代,如下所示:

Private Sub UserForm_Click()
    Dim c As Variant
    For Each c In Array("TextBox1", "TextBox2", "TextBox3")
        With Me.Controls(c)
            .Top = .Top + 50
        End With
    Next
End Sub

使用控件的 Tag 属性分配 ID

也许将 ID 分配给要移动的所有控件的 Tag 属性(例如"Group1"(是一种更简单的方法。因此,您可以使用以下代码来获取整个"家庭"。

代码示例

Private Sub CommandButton1_Click()
' Purpose: move every control with Tag property "Group1"
Dim c As Variant
For Each c In Me.Controls
    If c.Tag = "Group1" Then c.Top = .Top + 50
Next c
End Sub

最新更新