我有一个带有分组控件的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