我是VBA编程的新手,我有一个Userform
和TextBoxes
,Labels
和Checkboxes
。
我的问题是如何自动调整尺寸或调整表格,因为我已经隐藏了Textbox
和Label
,所以如果单击Button
,它将取消隐藏Texbox
和Label
,并且它将自动调整Form
和其他控件的大小。
我不知道如何开始。
实际结果
假设在Label
和Texbox
之间存在隐藏的Team Name
和Last Name
,现在我单击更新RadioButton
,它将取消隐藏隐藏的Label
和Texbox
并调整表格和其他控件。
预期结果
有什么办法吗?
说,控件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
实际上两件事会有所不同。
如果计划再次隐藏控件,则将需要一个包含所有受影响的控件名称的数组,以及它们现有的Top的另一个数组(或维度)。您将遍历数组中的所有名称并重置顶部,例如
Me.Controls(Arr(0, i)).Top = Arr(1, i) + Iif(HideMe, 0, 30)
研究动态创建控件。您应该能够简单地创建一个现有控件的副本,从该控件继承所有属性。但是,该控件的任何事件代码都需要事先准备。