Excel 自动调整大小/调整用户表单
我是VBA编程新手,我有一个带有Excel 自动调整大小/调整用户表单,excel,vba,userform,Excel,Vba,Userform,我是VBA编程新手,我有一个带有文本框、标签和复选框的用户表单 我的问题是如何自动调整表单的大小,因为我已经隐藏了文本框和标签,现在如果我单击按钮,它将取消隐藏文本框和标签,它还将自动调整表单和其他控件的大小 我不知道怎么开始 实际结果 假设在团队名称和姓氏之间存在隐藏的标签和Texbox,现在我单击更新单选按钮它将取消隐藏隐藏的标签和Texbox,并调整表单和其他控件 预期结果 有什么方法可以做到这一点吗?比如说,隐藏在顶部90pt处的控件Tbx所需的空间是30pt。因此,当Tbx可见时,
文本框
、标签和复选框的用户表单
我的问题是如何自动调整表单的大小,因为我已经隐藏了文本框
和标签
,现在如果我单击按钮
,它将取消隐藏文本框
和标签
,它还将自动调整表单
和其他控件的大小
我不知道怎么开始
实际结果
假设在团队名称
和姓氏
之间存在隐藏的标签
和Texbox
,现在我单击更新单选按钮
它将取消隐藏隐藏的标签
和Texbox
,并调整表单和其他控件
预期结果
有什么方法可以做到这一点吗?比如说,隐藏在顶部90pt处的控件Tbx所需的空间是30pt。因此,当Tbx可见时,其下方的所有控件都应向下移动30磅,并且窗体的高度也应按相同的方式增加。下面的代码将在取消隐藏控件的同时完成此操作
Dim Ctl As MSForms.Controls
For Each Ctl In Me.Controls
With Ctl
If .Top >= 90 Then
If .Visible = True Then
.Top = Top + 30
Else
.Visible = True
End If
End If
End With
Next Ctl
Me.Top = Top + 30
在实践中有两件事是不同的
您可能需要再次隐藏控件
您可以动态创建控件,而不是将其隐藏
如果计划再次隐藏该控件,则需要一个包含所有受影响控件名称的数组,以及另一个用于其现有顶部的数组(或维度)。您将循环遍历数组中的所有名称并重置顶部,如
Me.Controls(Arr(0, i)).Top = Arr(1, i) + Iif(HideMe, 0, 30)
研究动态创建控件。您应该能够简单地创建继承所有属性的现有控件的副本。但是,该控件的任何事件代码都需要提前准备