自动 Size/Adjust 用户表单

Auto Size/Adjust Userform

我是 VBA 编程新手,我有一个 Userform TextBoxesLabelsCheckboxes

我的问题是如何自动调整大小或调整表格,因为我已经隐藏了 TextboxLabel,现在如果我点击 Button 它会取消隐藏 TexboxLabel 并且它还会自动调整 Form 和其他控件的大小。

我不知道如何开始。

实际结果

假设在 Team NameLast Name 之间隐藏了 LabelTexbox 现在我单击更新 RadioButton 它将取消隐藏隐藏 LabelTexbox 并调整表单和其他控件。

预期结果

有什么办法吗?

比如说,控件Tbx所要求的space隐藏在距离顶部90pt的层级是30pt。因此,当 Tbx 可见时,它下面的所有控件都应向下移动 30pt,并且窗体的高度也会增加相同的尺寸。下面的代码将完成此操作,同时取消隐藏控件。

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

实践中有两件事会有所不同。

  1. 您可能需要再次隐藏控件。
  2. 您可以即时创建控件而不是将其隐藏起来。

如果您计划再次隐藏该控件,您将需要一个包含所有受影响的控件名称的数组和另一个数组(或维度)用于它们现有的 Top。您将遍历数组中的所有名称并重置顶部,例如

Me.Controls(Arr(0, i)).Top = Arr(1, i) + Iif(HideMe, 0, 30)

考虑即时创建控件。您应该能够简单地创建一个现有控件的副本,它从中继承所有属性。但是,该控件的任何事件代码都需要提前准备。