自动尺寸/调整用户表单

问题描述 投票:1回答:1

我是VBA编程的新手,我有一个UserformTextBoxesLabelsCheckboxes

我的问题是如何自动调整尺寸或调整表格,因为我已经隐藏了TextboxLabel,所以如果单击Button,它将取消隐藏TexboxLabel,并且它将自动调整Form和其他控件的大小。

我不知道如何开始。

实际结果

enter image description here

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

预期结果

enter image description here

有什么办法吗?

excel vba userform
1个回答
2
投票

说,控件Tbx所需的空间从顶部隐藏在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)

研究动态创建控件。您应该能够简单地创建一个现有控件的副本,从该控件继承所有属性。但是,该控件的任何事件代码都需要事先准备。

© www.soinside.com 2019 - 2024. All rights reserved.