在Office VBA 2007 MSForms用户表单上,可以将一组控件作为一个完整的组移动..?

时间:2018-01-30 17:11:01

标签: vba excel-vba word-vba userform powerpoint-vba

我有一个带有分组控件的Office 2007 MSForms用户窗体(在Word中,但这也适用于Excel和PowerPoint)。要清楚,他们不在#34;框架内。控制;相反,我已经使用IDE组/取消组合功能将它们组合在一起。

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

可以这样做吗?我找不到任何类型的"控制组"对象是指。我在调试模式下停止了代码并检查了Me.*Me.Controls.*下的每个项目,但我找不到任何明显的内容。

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

2 个答案:

答案 0 :(得分:1)

除了你自己建议的解决方案之外,没有任何其他解决方案。一种不同的方法就是将控件添加到数组中,然后迭代它,如下所示:

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

答案 1 :(得分:1)

使用控件的Tag属性分配ID

也许这是一种更简单的方法,可以为您要移动的所有控件的Tag属性分配ID,例如“组1”。因此,您可以使用以下代码来获取整个“Family”

代码示例

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