VBA:在userform中一次移动多个元素

VBA:在userform中一次移动多个元素,vba,excel,userform,Vba,Excel,Userform,我想在单击复选框时展开我的userform。一些元素的移动应该与我的userform扩展的值相同,以便它们始终与表单的底部边框保持相同的距离 目前,我单独移动每个元素,就像这样,“Ausklapphoehe”是移动/扩展的值(它工作得很好,但我认为它没有很好地编码): 我有三个缩短代码的想法: 将元素“id”存储在数组中,并通过在数组中迭代执行重复任务(不知道如何将元素存储在数组中) 只需对元素进行分组,并仅对该组执行任务(不知道如何在vba代码中寻址组) 给元素一个相互标记,只需在标记上寻址元

我想在单击复选框时展开我的userform。一些元素的移动应该与我的userform扩展的值相同,以便它们始终与表单的底部边框保持相同的距离

目前,我单独移动每个元素,就像这样,“Ausklapphoehe”是移动/扩展的值(它工作得很好,但我认为它没有很好地编码):

我有三个缩短代码的想法:

  • 将元素“id”存储在数组中,并通过在数组中迭代执行重复任务(不知道如何将元素存储在数组中)
  • 只需对元素进行分组,并仅对该组执行任务(不知道如何在vba代码中寻址组)
  • 给元素一个相互标记,只需在标记上寻址元素(不知道如何寻址标记)

  • 每个对象都有一个
    标记
    属性,您可以为所有要移动的对象指定一个标记,如
    删除
    。那么代码就会非常清楚:

    Private Sub Filtereigenschaften_Click()
        Dim obj As Object
        Dim adj As Variant
    
        Filtergruppe.Visible = IIf(Filtereigenschaften.Value, True, False)
        adj = IIf(Filtereigenschaften.Value, Ausklapphoehe, -Ausklapphoehe)
    
        UserForm.Height = UserForm.Height + adj
        For Each obj In Controls
            If obj.Tag = toBeMoved Then obj.Top = obj.Top + adj
        Next obj
    End Sub
    
    将值赋给
    .Tag
    的方法可以写入
    UserForm\u Initialize()
    ,也可以通过属性窗口手动编辑它(如果隐藏,则按F4)。

    要使用“”,请将
    框架
    放在表单上,并在其上放置/拖动控件。 移动帧时,帧上的所有控件都会随之移动。如果要使框架本身不可见,请设置框架的
    边框
    标题
    -属性。如果编写类似于
    Me.Frame1.Visible=false
    的内容,它也会隐藏该框架上的所有控件

    要使用标签访问控件,请执行以下操作:

    Sub ControlsByTag(tag As String)
        Dim ctrl As Control
        For Each ctrl In Me.Controls
            Debug.Print ctrl.Name, ctrl.tag
        Next ctrl
    End Sub
    
    要使用数组

    ' Assign to array:
    Dim a
    a = Array(Me.CommandButton1, Me.CommandButton2)
    
    ' Loop over the array:
    Dim i As Long
    For i = LBound(a) To UBound(a)
        Debug.Print a(i).Name, a(i).tag
    Next i
    

    谢谢我不知道我可以隐藏边框和边框的标题。
    ' Assign to array:
    Dim a
    a = Array(Me.CommandButton1, Me.CommandButton2)
    
    ' Loop over the array:
    Dim i As Long
    For i = LBound(a) To UBound(a)
        Debug.Print a(i).Name, a(i).tag
    Next i